使用 mmock 去 Mock API,會需要放置 mock 的設定。
設定檔可以是 json 格式…
{ “request”: { “method”: “GET”, “path”: “/hello/*” }, “response”: { “statusCode”: 200, “headers”: { “Content-Type”:[“application/json”] }, “body”: “{"hello": "{{request.query.name}}, my name is {{fake.FirstName}}"}” } }
也可以是 yml 格式…
request: method: GET path: “/hello/*” response: statusCode: 200 headers: Content-Type:
- application/json body: ‘{“hello”: “{{request.query.name}}, my name is {{fake.FirstName}}”}’
設定檔格式定義如下:
{ “description”: “Some text that describes the intended usage of the current configuration”, “request”: { “host”: “example.com”, “method”: “GET|POST|PUT|PATCH|…”, “path”: “/your/path/:variable”, “queryStringParameters”: { “name”: [“value”], “name”: [“value”, “value”] }, “headers”: { “name”: [“value”] }, “cookies”: { “name”: “value” }, “body”: “Expected Body” }, “response”: { “statusCode”: “int (2xx,4xx,5xx,xxx)”, “headers”: { “name”: [“value”] }, “cookies”: { “name”: “value” }, “body”: “Response body” }, “control”: { “scenario”: { “name”: “string (scenario name)”, “requiredState”: [ “not_started (default state)”, “another_state_name” ], “newState”: “new_stat_neme” }, “proxyBaseURL”: “string (original URL endpoint)”, “delay”: “int (response delay in seconds)”, “crazy”: “bool (return random 5xx)”, “priority”: “int (matching priority)”, “webHookURL” : “string (URL endpoint)” } }
主要分為 Request、Response、與 Control 幾塊。
Request 這塊是用來描述 http 請求的,像是請求的主機、http method、請求的路徑位置、請求的參數、請求的標頭、cookie、及請求的內容。
Element | Description |
---|---|
host | Request http hostt. (without port) |
method | Request http method. |
path | Resource identifier. It allows :value matching. Mandatory |
queryStringParameters | Array of query strings. It allows more than one value for the same key. |
headers | Array of headers. It allows more than one value for the same key. |
cookies | Array of cookies. |
body | Body string. It allows * pattern. |
Response 部分用來描述 http 的回應,像是回應的狀態碼、回應的標頭、cookie、及回應的內容。
Element | Description |
---|---|
statusCode | Request http method. |
headers | Array of headers. It allows more than one value for the same key and vars. |
cookies | Array of cookies. It allows vars. |
body | Body string. It allows vars. |
Control 部分不一定需要,用來做些控制使用的,像是回應的延遲時間、是否隨機回應錯誤…等。
Element | Description |
---|---|
scenario | A scenario is essentially a state machine whose states can be arbitrarily assigned. |
proxyBaseURL | If this parameter is present, it sends the request data to the BaseURL and resend the response to de client. |
delay | Delay the response in seconds. Simulate bad connection or bad server performance. |
crazy | Return random server errors (5xx) in some request. Simulate server problems. |
priority | Set the priority to avoid match in less restrictive mocks. Higher, more priority. |
webHookURL | After any match if this option is defined it will notify the match to the desired endpoint. |