0.0.1 • Published 6 years ago

typed-request v0.0.1

Weekly downloads
1
License
MIT
Repository
-
Last release
6 years ago

typed-request

A typed HTTP client for node.js.

Example

Type safe response with generic

intellisense

Features

  • Make a http request for NodeJS.
  • Returns a typed Promise with TypeScript Generic.
  • cURL command output
  • HTTP response validation
  • 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();