前端联调时想要一个”始终返回 VIP=1”的假接口,去写后端太重,Nginx 直接顶上就行。
最简写法
location /is_vip {
default_type application/json;
return 200 '{"code":200,"msg":"操作成功","data":1}';
}
三行做完三件事:
default_type application/json;——告诉浏览器返回的是 JSON,不是text/plainreturn 200 '...'——直接给 HTTP 200 + 固定 body,不用 upstream- 外层用单引号包住整个 JSON,内层用双引号,省得转义
防止被前端缓存
浏览器可能把这个 200 响应缓存下来,联调时容易被误导。加个 no-store:
location /is_vip {
default_type application/json;
add_header Cache-Control no-store;
return 200 '{"code":200,"msg":"操作成功","data":1}';
}
跟根据参数返回不同内容
要根据 query string 分支返回,可以用 if + map:
map $arg_uid $vip_result {
default '{"code":200,"msg":"操作成功","data":0}';
"1" '{"code":200,"msg":"操作成功","data":1}';
"2" '{"code":200,"msg":"操作成功","data":1}';
}
location /is_vip {
default_type application/json;
return 200 $vip_result;
}
访问 /is_vip?uid=1 返回 VIP=1,其它返回 VIP=0。
需要更复杂的 mock 逻辑就该上 OpenResty 或者写真后端了——Nginx 原生更适合”固定返回”这类死数据。
一句话总结
default_type application/json + return 200 '{...}'。联调阶段最快的 mock 接口,比启 Node/Python 都省事。
