{"id":23721211,"url":"https://github.com/byndyusoft/nest-http-client","last_synced_at":"2025-09-03T21:31:32.702Z","repository":{"id":37801469,"uuid":"499096542","full_name":"Byndyusoft/nest-http-client","owner":"Byndyusoft","description":"axios for NestJS","archived":false,"fork":false,"pushed_at":"2024-12-29T12:00:10.000Z","size":244,"stargazers_count":3,"open_issues_count":16,"forks_count":0,"subscribers_count":9,"default_branch":"master","last_synced_at":"2024-12-29T13:17:22.118Z","etag":null,"topics":["axios","http-client","nestjs","nodejs","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Byndyusoft.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-06-02T10:49:54.000Z","updated_at":"2024-09-23T12:46:55.000Z","dependencies_parsed_at":"2024-03-25T04:22:16.198Z","dependency_job_id":"8cd3c240-2e79-4670-b331-c6ab171549ae","html_url":"https://github.com/Byndyusoft/nest-http-client","commit_stats":{"total_commits":12,"total_committers":2,"mean_commits":6.0,"dds":0.08333333333333337,"last_synced_commit":"582df46864eac77d8c452ae40e6a178f65ed0ce1"},"previous_names":[],"tags_count":6,"template":false,"template_full_name":"Byndyusoft/node-typescript-template","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Byndyusoft%2Fnest-http-client","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Byndyusoft%2Fnest-http-client/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Byndyusoft%2Fnest-http-client/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Byndyusoft%2Fnest-http-client/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Byndyusoft","download_url":"https://codeload.github.com/Byndyusoft/nest-http-client/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":231918669,"owners_count":18445782,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["axios","http-client","nestjs","nodejs","typescript"],"created_at":"2024-12-30T22:18:11.322Z","updated_at":"2024-12-30T22:18:11.744Z","avatar_url":"https://github.com/Byndyusoft.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# nest-http-client\n\n[![npm@latest](https://img.shields.io/npm/v/@byndyusoft/nest-http-client/latest.svg)](https://www.npmjs.com/package/@byndyusoft/nest-http-client)\n[![test](https://github.com/Byndyusoft/nest-http-client/actions/workflows/test.yaml/badge.svg?branch=master)](https://github.com/Byndyusoft/nest-http-client/actions/workflows/test.yaml)\n[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg)](https://github.com/prettier/prettier)\n[![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg)](https://github.com/semantic-release/semantic-release)\n\naxios for NestJS\n\n## Comparison with `@nestjs/axios`\n\n- [Promises instead of Observables](https://github.com/nestjs/axios/issues/271)\n- Allowing you use global `axios` with interceptors and different configs for various clients\n- `endpoint` requests like `@octokit/endpoint`\n\n## Requirements\n\n- Node.js v14 LTS or later\n- Yarn\n\n## Install\n\n```bash\nyarn add @byndyusoft/nest-http-client @nestjs/common axios\n```\n\n## Usage\n\n\u003cdetails\u003e\n\u003csummary\u003e1. Create module\u003c/summary\u003e\n\n```typescript\nimport { TRegisterAsyncOptions } from \"@byndyusoft/nest-dynamic-module\";\nimport {\n  HttpClientModule,\n  IHttpClientOptions,\n} from \"@byndyusoft/nest-http-client\";\nimport { DynamicModule, Global, Module } from \"@nestjs/common\";\nimport urlJoin from \"proper-url-join\";\nimport qs from \"qs\";\n\nimport { UsersClient } from \"./usersClient\";\n\n@Global()\n@Module({\n  providers: [UsersClient],\n  exports: [UsersClient],\n})\nexport class ClientModule {\n  public static registerAsync(\n    options?: TRegisterAsyncOptions\u003cIHttpClientOptions\u003e,\n  ): DynamicModule {\n    return HttpClientModule.registerClientModule(\n      { module: ClientModule },\n      options,\n      (config) =\u003e ({\n        ...config,\n        baseURL: urlJoin(config?.baseURL as string, \"/api/v1\"),\n        paramsSerializer: (params) =\u003e\n          qs.stringify(params, {\n            skipNulls: true,\n            arrayFormat: \"repeat\",\n          }),\n      }),\n    );\n  }\n}\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e2. Module Initialization\u003c/summary\u003e\n\n```typescript\nimport { Module } from \"@nestjs/common\";\nimport axios from \"axios\";\n\nimport { UsersClientModule } from \"./clients/users\";\nimport { ConfigModule } from \"./configModule\";\nimport { ConfigDto } from \"./dtos\";\nimport { SomeService } from \"./some.service\";\nimport { SomeController } from \"./someController\";\n\nconst axiosInstance = axios.create();\n\n// You can configure axios here, e.g. interceptors\n\n@Module({\n  imports: [\n    ConfigModule.forRoot(),\n    UsersClientModule.registerAsync({\n      inject: [ConfigDto],\n      useFactory: async (config: ConfigDto) =\u003e ({\n        axios: axiosInstance,\n        config: config.usersApiClient,\n      }),\n    }),\n  ],\n  controllers: [SomeController],\n  providers: [SomeService],\n})\nexport class AppModule {}\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e3. Create client (using new endpoint method)\u003c/summary\u003e\n\n```typescript\nimport { HttpClient } from \"@byndyusoft/nest-http-client\";\nimport { Injectable } from \"@nestjs/common\";\n\nimport {\n  CreateUserDto,\n  ListUsersQueryDto,\n  ListUsersResponseDto,\n  ParamsWithUserIdDto,\n  QueryWithUserVersionDto,\n  UpdateUserDto,\n  UserDto,\n} from \"ᐸDtosᐳ\";\n\n@Injectable()\nexport class UsersClient {\n  public constructor(private readonly httpClient: HttpClient) {}\n\n  public createUser(request: CreateUserDto): Promise\u003cUserDto\u003e {\n    return this.httpClient.endpoint(\"POST /users\", request);\n  }\n\n  public deleteUser(\n    request: ParamsWithUserIdDto \u0026 QueryWithUserVersionDto,\n  ): Promise\u003cUserDto\u003e {\n    return this.httpClient.endpoint(\n      \"DELETE /users/{userId}{?userVersion}\",\n      request,\n    );\n  }\n\n  public getUserById(request: ParamsWithUserIdDto): Promise\u003cUserDto\u003e {\n    return this.httpClient.endpoint(\"GET /users/{userId}\", request);\n  }\n\n  public listUsers(\n    request?: Partial\u003cListUsersQueryDto\u003e,\n  ): Promise\u003cListUsersResponseDto\u003e {\n    return this.httpClient.endpoint(\"GET /users\", request);\n  }\n\n  public updateUser(\n    request: ParamsWithUserIdDto \u0026 QueryWithUserVersionDto \u0026 UpdateUserDto,\n  ): Promise\u003cUserDto\u003e {\n    return this.httpClient.endpoint(\n      \"PATCH /users/{userId}{?userVersion}\",\n      request,\n    );\n  }\n}\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e3.1. Create client (using standard methods)\u003c/summary\u003e\n\n```typescript\nimport { HttpClient } from \"@byndyusoft/nest-http-client\";\nimport { Injectable } from \"@nestjs/common\";\nimport _ from \"lodash\";\n\nimport {\n  CreateUserDto,\n  ListUsersQueryDto,\n  ListUsersResponseDto,\n  ParamsWithUserIdDto,\n  QueryWithUserVersionDto,\n  UpdateUserDto,\n  UserDto,\n} from \"ᐸDtosᐳ\";\n\n@Injectable()\nexport class UsersClient {\n  public constructor(private readonly httpClient: HttpClient) {}\n\n  public createUser(request: CreateUserDto): Promise\u003cUserDto\u003e {\n    return this.httpClient.post(\"/users\", request);\n  }\n\n  public deleteUser(\n    request: ParamsWithUserIdDto \u0026 QueryWithUserVersionDto,\n  ): Promise\u003cUserDto\u003e {\n    return this.httpClient.delete(\n      `/users/${encodeURIComponent(request.userId)}`,\n      {\n        params: _.omit(request, \"userId\"),\n      },\n    );\n  }\n\n  public getUserById(request: ParamsWithUserIdDto): Promise\u003cUserDto\u003e {\n    return this.httpClient.get(`/users/${encodeURIComponent(request.userId)}`);\n  }\n\n  public listUsers(\n    request?: Partial\u003cListUsersQueryDto\u003e,\n  ): Promise\u003cListUsersResponseDto\u003e {\n    return this.httpClient.get(\"/users\", {\n      params: request,\n    });\n  }\n\n  public updateUser(\n    request: ParamsWithUserIdDto \u0026 QueryWithUserVersionDto \u0026 UpdateUserDto,\n  ): Promise\u003cUserDto\u003e {\n    return this.httpClient.patch(\n      `/users/${encodeURIComponent(request.userId)}`,\n      _.omit(request, \"userId\", \"userVersion\"),\n      {\n        params: _.pick(request, \"userVersion\"),\n      },\n    );\n  }\n}\n```\n\n\u003c/details\u003e\n\n## Maintainers\n\n- [@Byndyusoft/owners](https://github.com/orgs/Byndyusoft/teams/owners) \u003c\u003cgithub.maintain@byndyusoft.com\u003e\u003e\n- [@Byndyusoft/team](https://github.com/orgs/Byndyusoft/teams/team)\n- [@KillWolfVlad](https://github.com/KillWolfVlad)\n\n## License\n\nThis repository is released under version 2.0 of the\n[Apache License](https://www.apache.org/licenses/LICENSE-2.0).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbyndyusoft%2Fnest-http-client","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbyndyusoft%2Fnest-http-client","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbyndyusoft%2Fnest-http-client/lists"}