UNPKG

ohayolibs

Version:

Ohayo is a set of essential modules for ohayojp.

98 lines (77 loc) 2.92 kB
--- order: 2 title: Rule Data type: Documents --- ## Foreword The Mock rule data is an `Object` object, Key is request declaration, and Value is response data, for example: ```ts export const USERS = { 'GET /users': { users: [1, 2], total: 2 }, } ``` When send requesting `/users` via `HttpClient`, it will directly response `{ users: [1, 2], total: 2 }`, and will not send any HTTP requests in `Network` panel. ## Key Use `' '`space to separate the request method and URL, the request method can be ignored, the default is `GET`; the URL supports routing parameters and regular expressions. E.g: ```ts export const USERS = { 'GET /users': null, // GET: can be ingored '/users/1': null, // POST 'POST /users/1': null, // Routing parameters '/users/:id': null, // Regular expressions need to be wrapped with `()` '/data/(.*)': null }; ``` ## Value Supports three types: `Object`, `Array`, `(req: MockRequest) => any`. ```ts import { MockStatusError } from '@ohayo/mock'; export const USERS = { // Array '/users': [ { uid: 1 }, { uid: 2 } ], // Object '/users': { uid: 1 }, // Function '/qs': (req: MockRequest) => req.queryString.pi, // Support HttpResponse '/http': (req: MockRequest) => new HttpResponse({ body: 'Body', headers: new HttpHeaders({ 'token': '1' }) }), // Send Status Error '/404': () => { throw new MockStatusError(404); } }; ``` ### MockRequest Name | Type | Description ------------|--------------------|------------------------------------------------------------------ `[params]` | `any` | Routing parameter, `/:id` then `params.id` `[queryString]` | `any` | URL parameter, `/users?pi=1&ps=10` then `queryString.pi`, `queryString.ps` `[headers]` | `any` | Headers `[body]` | `any` | Body `[original]` | `HttpRequest<any>` | `HttpRequest` ### MockStatusError When you want to respond to a `404` http status. ## Demo ```ts import { MockStatusError } from '@ohayo/mock'; export const USERS = { // Support object or array values 'GET /users': { users: [1, 2], total: 2 }, // GET: can be ingored '/users/1': { users: [1, 2], total: 2 }, // POST 'POST /users/1': { uid: 1 }, // Get request parameters: queryString、headers、body '/qs': (req: MockRequest) => req.queryString.pi, // Routing parameters '/users/:id': (req: MockRequest) => req.params, // /users/100, output: { id: 100 } // Send Status Error '/404': () => { throw new MockStatusError(404); }, // Regular expressions need to be wrapped with `()` '/data/(.*)': (req: MockRequest) => req }; ``` ## Storage rule In general, Mock is required during development, so recommended to create `_mock` directory in the project root directory and create `index.ts` file to export all data rules. See [ohayojp/_mock]( Https://github.com/ohayojp/ohayojp/tree/master/_mock).