在业务开发联调阶段,常遇到因为各自开发负责的模块开发进度不统一,部分接口没有开发完成,导致其他组开发联调阻塞,这时候我们可能就需要伪造一个接口返回,跳过阻塞的接口部分,保证项目组/测试的进度。
1.模拟GET返回JSON
server {
listen 8082;
server_name _;
location = /api/register {
# 设定默认类型
default_type application/json;
# 返回状态码与JSON
return 200 '{"code": 0,"messge":"注册成功","data":[]}';
}
}我们重新加载nginx配置后(nginx -s reload),请求试试。
# 可以看到获取到的是我们定义的json
$ curl 127.0.0.1:8082/api/register
{"code": 0,"messge":"注册成功","data":[]}
有时候,我们也想把我们传递的参数打印出来
server {
listen 8082;
server_name _;
location = /api/register {
# 设定默认类型
default_type application/json;
# 返回状态码与JSON
return 200 '{"code": 0,"messge":"注册成功","data":[\"$args\"]}';
}
}重新加载再试试
$ curl 127.0.0.1:8082/api/register?phone=136001455xx
{"code": 0,"messge":"注册成功","data":["phone=136001455xx"]}
2.模拟POST返回JSON
模拟GET请求很简单, 但我们试试POST呢?
# 正常返回了POST
$ curl -vX POST 127.0.0.1:8082/api/register
* About to connect() to 127.0.0.1 port 8082 (#0)
* Trying 127.0.0.1...
* Connected to 127.0.0.1 (127.0.0.1) port 8082 (#0)
> POST /api/register HTTP/1.1
> User-Agent: curl/7.29.0
> Host: 127.0.0.1:8082
> Accept: */*
>
< HTTP/1.1 200 OK
< Server: nginx/1.12.2
< Date: Tue, 02 Apr 2019 02:58:26 GMT
< Content-Type: application/json
< Content-Length: 47
< Connection: keep-alive
<
* Connection #0 to host 127.0.0.1 left intact
{"code": 0,"messge":"注册成功","data":[""]}
但是,也有种情况某些早期的Nginx版本会把默认POST转成GET,由此,我们需要借助proxy_pass绕一下来获取正确的结果返回
server {
listen 8082;
server_name _;
location = /api/register_POST {
default_type application/json;
return 200 '{"code": 0,"messge":"注册成功","data":[\"$args\"]}';
}
location = /api/register {
# 设定代理请求类型为POST
proxy_method POST;
# 代理到本机的/api/register_POST
proxy_pass http://127.0.0.1:8082/api/register_POST;
}
}
没有帐号? 立即注册