1.1.14 • Published 4 years ago
@squelette/request-gen v1.1.14
@squelette/request-gen 
An API request hints generator from Open API 3.0 spec.
Requirements
You need to set strictPropertyInitialization TS compiler options to false.
About package
This packages generates API Request hints which may be useful for those who using axios and other HTTP client libraries.
Install
$ yarn add @squelette/request-genHow to use
$ request-gen generate spec.yml --dist requestsCLI Options
Usage: request-gen [options] [command]
Generate type definitions from swagger specs
Options:
-V, --version output the version number
-h, --help output usage information
Commands:
generate [options] <file>
Options:
-d, --dist <dist> Output directory
-h, --help output usage informationUsage
To give you a better sense, here's a simple example.
openapi: "3.0.0"
...
paths:
/pets/{petId}:
get:
operationId: showPetById
tags:
- pets
parameters:
- name: petId
in: path
required: true
description: The id of the pet to retrieve
schema:
type: string
responses:
'200':
description: Expected response to a valid request
content:
application/json:
schema:
$ref: "#/components/schemas/Pets"
components:
schemas:
Pet:
...This schema will be converted to...
import * as operations from "./gen-ts";
export class showPetById
implements APIRequest<operations.showPetByIdResponse> {
response: operations.showPetByIdResponse;
method = HTTPMethod["get"];
path: string;
params?: operations.showPetByIdRequest;
constructor(args: {
params?: operations.showPetByIdRequest;
pathParameter: operations.showPetByIdPathParameter;
}) {
const { params, pathParameter } = args;
this.params = params;
this.path = `/pets/${pathParameter.petId}`;
}
}The generated schema can be used with your API client like this.
# Your API Client
import axios from 'axios'
class APIClient {
baseURL = 'https//hogehoge.com'
request<U>(hint: APIRequest<U>): Promise<U> {
const isRead = request.method === HTTPMethod.GET
return axios.request({
url: hint.path,
method: hint.method,
params: isRead && request.params,
data: !isRead && request.params,
baseURL: request.baseURL || this.baseURL
})
}
}
# Call API
import { showPetByID } from './requests'
new APIClient().request(new showPetByID({
pathParameter: {
petId: 'hoge'
}
}))Detailed Example
See example.
License
MIT
1.1.14
4 years ago
1.1.13
4 years ago
1.1.12
4 years ago
1.1.11
4 years ago
1.1.9
4 years ago
1.1.8
4 years ago
1.1.10
4 years ago
1.1.7
5 years ago
1.1.6
5 years ago
1.1.5
5 years ago
1.1.4
5 years ago
1.1.1
5 years ago
1.1.3
5 years ago
1.1.2
5 years ago
1.1.0
6 years ago
0.2.10
6 years ago
0.2.8
6 years ago
0.2.3
6 years ago
0.2.2
6 years ago
0.2.1
6 years ago
0.2.0
6 years ago
0.1.5
6 years ago
0.1.4
6 years ago
0.1.3
6 years ago
0.1.2
6 years ago
0.1.1
6 years ago
0.1.0
6 years ago