0.0.1 • Published 6 years ago
happy-request v0.0.1
Happy Request
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
Name | Type | Attributes | Description |
---|---|---|---|
options | HappyRequestOptions | Request parameters | |
sendImmediately | boolean | <optional> | Send request after construct immediately or not |
HappyRequestOptions
definition
Name | Type | Attributes | Description |
---|---|---|---|
url | string | Request url | |
method | string | Request method. GET, POST, ... | |
headers | object | <optional> | Request headers |
query | object | <optional> | URL query parameters |
body | object | FormData| string | <optional> | Request body |
timeout | number | <optional> | Request timeout. (millisecond) |
responseType | string | <optional> | XMLHttpRequest.responseType. Available values: "", "arraybuffer", "blob", "document", "json", "text" |
tec | string | <optional> | Specify request technology. Available values: "xhr", "fetch". The default order is "fetch" > "xhr" |
fetchOptions | object | <optional> | Options for "fetch" while "fetch" is used. See fetch parameter "init" |
HappyResponse
Name | Type | Description |
---|---|---|
status | number | HTTP status code |
statusText | string | HTTP status text |
headers | HappyHeaders | Response headers class |
data | any | Decide by "responseType" and response's header "Content-Type" |
HappyRequest
's methods
send(): HappyRequest
Send request manuallycancel(): HappyRequest
Cancel requestsuccess(cb: (res: HappyResponse) => any): HappyRequest
Set success callbackerror(cb: (res: HappyResponse) => any): HappyRequest
Set error callbackfinally(cb: () => any): HappyRequest
Set finally callbackcatch(cb: (e: Error) => any): HappyRequest
Set exception handlerbeforeRequest(cb: () => any): HappyRequest
Set interceptor before requestafterResponse(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
Name | Type | Attributes | Description |
---|---|---|---|
token | string &124; number &124; symbol | Request identifier | |
url | string | Request url. path parameters allowed. Such as /user/:uid | |
method | string | Same as HappyRequestOptions's | |
query | Array | <optional> | URL query parameter names |
body | Array | <optional> | Body parameter names |
timeout | number | <optional> | Same as HappyRequestOptions's |
headers | object | <optional> | Same as HappyRequestOptions's |
responseType | string | <optional> | Same as HappyRequestOptions's |
fetchOptions | object | <optional> | Same as HappyRequestOptions's |
HappyAPIManager
constructor parameters
Name | Type | Attributes | Description |
---|---|---|---|
apis | Array | <optional> | API definitions |
check | boolean | <optional> | Validate api or not. True for develop environment |
HappyAPIManager
's methods
add(api: HappyAPI, check: boolean): HappyAPIManager
Add api definitionbeforeRequest(cb: () => any): HappyAPIManager
Set interceptor before sending request for all APIsafterResponse(cb: (res: HappyResponse) => any): HappyAPIManager
Set interceptor after response for all APIsrequest(params: HappyAPIRequestParams, sendImmediately: boolean = true): HappyRequest
Create a request instanceget(token: Token, query: PlainParams | undefined | null, sendImmediately: boolean = true): HappyRequest
Syntactic sugar for GET requestpost(token: Token, body: any, query: PlainParams | undefined | null, sendImmediately: boolean = true): HappyRequest
Syntactic sugar for POST requestput(token: Token, body: any, query: PlainParams | undefined | null, sendImmediately: boolean = true): HappyRequest
Syntactic sugar for PUT requestpatch(token: Token, body: any, query: PlainParams | undefined | null, sendImmediately: boolean = true): HappyRequest
Syntactic sugar for PATCH requestdelete(token: Token, query: PlainParams | undefined | null, sendImmediately: boolean = true): HappyRequest
Syntactic sugar for DELETE requestgetURL(token: Token, query: PlainParams | null | undefined, path: PlainParams | null | undefined): string
Generate url
0.0.1
6 years ago