typed-request
v0.0.1
Published
A typed HTTP client written in TypeScript
Downloads
2
Readme
typed-request
A typed HTTP client for node.js.
Example
Type safe response with generic
Features
- [x] Make a http request for NodeJS.
- [x] Returns a typed Promise with TypeScript Generic.
- [x] cURL command output
- [x] HTTP response validation
- [x] Process HTTP respnse / error
- [ ] Cancellation of request / Retring request
- [ ] Complete documentation
APIs
Request can be made by passing RequestConfig
request(config: RequestConfig);
const config = {
url: "https://example.com/users",
method: "POST",
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify({ name: "foo" })
};
const user: User = await request<User>(config);
RequestConfig
url: string
method: HttpMethod
import { HttpMethod } from "typed-request";
{
method: HttpMethod.Get;
}
headers: Object
{
headers: {
Authorization: "Bearer foo";
}
}
body: Object
{
body: {
param0: "value0";
}
}
query: Object
{
query: {
param0: "value0";
}
}
auth: { username: string, password: string }
{
auth: { username: "foo", password: "bar" }
}
bodyValidator: (body: Object) => boolean
If bodyValidator
returns false
, a request will return Promise reject immediately.
{
bodyValidator: (body: Object) => body.length > 0;
}
responseProcessor: (body: Object) => T
responseProcessor
is a function which can process response data what you want with type definition.
errorProcessor: (body: Object, error: Error) => Error
errorProcessor
is a function which can process error response which is returend as Promise reject.
retryCount: number
You can specify a number of retring requests.
timeout: number
If the request takes longer than timeout you specified, request should be aborted. Default value is 1000.
outputCurlCommand: boolean
You can specify if output a cURL command for per request. True is default.
const config = {
method: HttpMethod.Post,
body: JSON.stringify({
rating: 5,
comment: "cool!"
}),
headers: {
Authorization: "Bearer foo",
"Content-Type": "application/json"
}
};
request<Review>(config);
curl -X POST -H "Authorization: Bearer foo" -H "Content-Type: application/json" -d '{"rating": 5, "comment": "cool!"}' http://somesite.com/some.json
Cancellation
abort: () => void
const r = await request<User[]>({
url: "https://example.com/users"
});
r.abort();