benmo | 发布于 2019-04-03 09:31:59 | 阅读量 1402 | ? Nginx ?
发布于 2019-04-03 09:31:59 | ? Nginx ?

      在业务开发联调阶段,常遇到因为各自开发负责的模块开发进度不统一,部分接口没有开发完成,导致其他组开发联调阻塞,这时候我们可能就需要伪造一个接口返回,跳过阻塞的接口部分,保证项目组/测试的进度。


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;
    }
}

 


内容更新于: 2019-04-03 09:31:59
链接地址: http://blog.leanote.com/post/benmo/Nginx-%E6%A8%A1%E6%8B%9F%E6%8E%A5%E5%8F%A3%E8%BF%94%E5%9B%9E

上一篇: Tomcat基于Jenkins+Ansible的自动发布(1)

下一篇: X-Y PROBLEM

1402 人读过
立即登录, 发表评论.
没有帐号? 立即注册
0 条评论
文档导航