https://github.com/reactwaylabs/api-builder
An easy api client builder for applications with identity.
https://github.com/reactwaylabs/api-builder
api-builder api-client identity-client oauth2
Last synced: 4 months ago
JSON representation
An easy api client builder for applications with identity.
- Host: GitHub
- URL: https://github.com/reactwaylabs/api-builder
- Owner: reactwaylabs
- License: mit
- Created: 2019-04-04T16:07:04.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2023-01-03T19:06:56.000Z (over 2 years ago)
- Last Synced: 2025-03-13T23:45:53.340Z (4 months ago)
- Topics: api-builder, api-client, identity-client, oauth2
- Language: TypeScript
- Homepage:
- Size: 938 KB
- Stars: 0
- Watchers: 3
- Forks: 0
- Open Issues: 13
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[](https://www.npmjs.com/package/@reactway/api-builder)
[](https://dev.azure.com/reactway/ReactWay/_build?definitionId=7)
[](https://dev.azure.com/reactway/ReactWay/_build?definitionId=7)
[](https://david-dm.org/reactway/api-builder)
[](https://david-dm.org/reactway/api-builder?type=dev)# @reactway/api-builder
An easy api client builder for applications with identity.
## Features
- API builder is ready for SPA development
- OAuth identity mechanism included## Get started
```sh
$ npm install @reactway/api-builder
```To start using api builder first it needs to make an `ApiConfiguration` with structure (**host** field is **required**). Then initiate class with created configuration.
```ts
interface ApiConfiguration {
host: string;
path?: string;
defaultHeaders?: { [index: string]: string };
defaultAuthRequired?: boolean;
identity?: IdentityMechanism;
defaultQueryParams?: QueryParams;
requestQueueLimit?: number;
}const apiConfiguration: ApiConfiguration = {
host: "https://example.com"
};const ApiClient = new ApiBuilder(apiConfiguration);
```To make request you have create an `ApiRequest` typed object or arrow function if you want to pass parameters. `method` and `requestPath` fields are **required** for `ApiRequest`.
```ts
const getExample: ApiRequest = {
method: HttpMethods.GET
requestPath: PATH_GET
};const getExample = (id: number): ApiRequest => {
return {
method: HttpMethods.GET,
requestPath: `/${id}`
};
};
```Only http(s) method `GET` does not take `body` param. Rest of methods takes passed typed `body`. To pass typed `body` to a request here is an example.
```ts
interface Person {
name: string;
surname: string;
}const getExample = await apiBuilder.post({
requestPath: "/post",
body: {
name: "John",
surname: "Snow"
}
});
```Also you can pass `QueryParams`.
```ts
type QueryParams = { [key: string]: string | number | Array };const getExample: ApiRequest = {
method: HttpMethods.GET
requestPath: PATH_GET,
queryParams: {
page: 2
}
};
```## API
WIP
## Documentation
WIP
## License
Released under the [MIT license](LICENSE).