Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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: 15 days 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 (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2023-01-03T19:06:56.000Z (about 2 years ago)
- Last Synced: 2025-01-12T16:18:42.272Z (24 days ago)
- Topics: api-builder, api-client, identity-client, oauth2
- Language: TypeScript
- Homepage:
- Size: 938 KB
- Stars: 0
- Watchers: 4
- Forks: 0
- Open Issues: 13
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[![NPM version](https://img.shields.io/npm/v/@reactway/api-builder.svg?logo=npm)](https://www.npmjs.com/package/@reactway/api-builder)
[![Build Status](https://img.shields.io/azure-devops/build/reactway/reactway/7/master.svg?logo=azuredevops)](https://dev.azure.com/reactway/ReactWay/_build?definitionId=7)
[![Code coverage](https://img.shields.io/azure-devops/coverage/reactway/reactway/7/master.svg)](https://dev.azure.com/reactway/ReactWay/_build?definitionId=7)
[![Dependencies](https://img.shields.io/david/reactway/api-builder.svg)](https://david-dm.org/reactway/api-builder)
[![Dev dependencies](https://img.shields.io/david/dev/reactway/api-builder.svg)](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).