0.0.1 • Published 6 years ago

happy-request v0.0.1

Weekly downloads
2
License
ISC
Repository
github
Last release
6 years ago

Happy Request

npm browsers

HTTP request agent base on XMLHttpRequest and fetch.

Features

  • Provide Friendly APIs for sending request
  • Manage HTTP request definitions of backend service

Basic usage

import {HappyRequest} from 'happy-request/request';

// create a request instance
const req = new HappyRequest(optiont: HappyRequestOptions);

// set success callback
req.success((res: HappyResponse) => {});

// set error callback
req.error((e) => {});

// set exception handler
req.catch((e) => {});
HappyRequest's constructor parameters
NameTypeAttributesDescription
optionsHappyRequestOptionsRequest parameters
sendImmediatelyboolean<optional>Send request after construct immediately or not

HappyRequestOptions definition

NameTypeAttributesDescription
urlstringRequest url
methodstringRequest method. GET, POST, ...
headersobject<optional>Request headers
queryobject<optional>URL query parameters
bodyobject | FormData| string<optional>Request body
timeoutnumber<optional>Request timeout. (millisecond)
responseTypestring<optional>XMLHttpRequest.responseType. Available values: "", "arraybuffer", "blob", "document", "json", "text"
tecstring<optional>Specify request technology. Available values: "xhr", "fetch". The default order is "fetch" > "xhr"
fetchOptionsobject<optional>Options for "fetch" while "fetch" is used. See fetch parameter "init"
HappyResponse
NameTypeDescription
statusnumberHTTP status code
statusTextstringHTTP status text
headersHappyHeadersResponse headers class
dataanyDecide by "responseType" and response's header "Content-Type"

HappyRequest's methods

  • send(): HappyRequest Send request manually
  • cancel(): HappyRequest Cancel request
  • success(cb: (res: HappyResponse) => any): HappyRequest Set success callback
  • error(cb: (res: HappyResponse) => any): HappyRequest Set error callback
  • finally(cb: () => any): HappyRequest Set finally callback
  • catch(cb: (e: Error) => any): HappyRequest Set exception handler
  • beforeRequest(cb: () => any): HappyRequest Set interceptor before request
  • afterResponse(cb: (res: HappyResponse) => any): HappyRequest Set interceptor after response. Returning false means stop to call success/error/finally callbacks

Advance usage

import {HappyAPIManager} from 'happy-request';

// API definitions
const apis: Array<HappyAPI> = [
    {
        token: 'user.create',
        url: '/user',
        method: 'POST',
        body: ['username']// form fields
    },
    {
        token: 'user.list',
        url: '/user',
        method: 'GET',
        query: ['page', 'pageSize', 'username']// url query parameters
    },
    {
        token: 'user.detail',
        url: '/user/:uid',
        method: 'GET',
        responseType: 'json'// do not need to specify "json" while response's header "Content-Type" equal "application/json"
    },
    {
        token: 'user.delete',
        url: '/user/:uid',
        method: 'DELETE'
    }
];

// create a API manager instance
const am = new HappyAPIManager(apis, env.isDev /* validate api format in develop enviroment */);

// create a user
am.post('user.create', {username: 'happy'})
    .success(() => {
        alert('Create user successfully');
    })
    .error(() => {
        alert('Fail to create user');
    });

// user list
am.get('user.list', {username: 'happy'})
    .success((data) => {
        // show user list
    });

// user detail
am.request({
    token: 'user.detail',
    path: {uid: 1}
}).success(() => {});

// delete user
am.request({
    token: 'user.delete',
    path: {uid: 1}
}).success(() => {});

API definition

NameTypeAttributesDescription
tokenstring &124; number &124; symbolRequest identifier
urlstringRequest url. path parameters allowed. Such as /user/:uid
methodstringSame as HappyRequestOptions's
queryArray<optional>URL query parameter names
bodyArray<optional>Body parameter names
timeoutnumber<optional>Same as HappyRequestOptions's
headersobject<optional>Same as HappyRequestOptions's
responseTypestring<optional>Same as HappyRequestOptions's
fetchOptionsobject<optional>Same as HappyRequestOptions's

HappyAPIManager constructor parameters

NameTypeAttributesDescription
apisArray<optional>API definitions
checkboolean<optional>Validate api or not. True for develop environment

HappyAPIManager's methods

  • add(api: HappyAPI, check: boolean): HappyAPIManager Add api definition
  • beforeRequest(cb: () => any): HappyAPIManager Set interceptor before sending request for all APIs
  • afterResponse(cb: (res: HappyResponse) => any): HappyAPIManager Set interceptor after response for all APIs
  • request(params: HappyAPIRequestParams, sendImmediately: boolean = true): HappyRequest Create a request instance
  • get(token: Token, query: PlainParams | undefined | null, sendImmediately: boolean = true): HappyRequest Syntactic sugar for GET request
  • post(token: Token, body: any, query: PlainParams | undefined | null, sendImmediately: boolean = true): HappyRequest Syntactic sugar for POST request
  • put(token: Token, body: any, query: PlainParams | undefined | null, sendImmediately: boolean = true): HappyRequest Syntactic sugar for PUT request
  • patch(token: Token, body: any, query: PlainParams | undefined | null, sendImmediately: boolean = true): HappyRequest Syntactic sugar for PATCH request
  • delete(token: Token, query: PlainParams | undefined | null, sendImmediately: boolean = true): HappyRequest Syntactic sugar for DELETE request
  • getURL(token: Token, query: PlainParams | null | undefined, path: PlainParams | null | undefined): string Generate url
0.0.1

6 years ago