如果在线的系统出现前端调用后端参数名不对的问题需要紧急处理,而此时前后端又不方便修改、发布,这时改怎样处理?
不急,如果后端接口是通过nginx反向代理的,那你有一个简便的方法,可以通过nginx重写url参数,来解决这个问题。
在server模块下,添加,如下配置:
if ( $request_uri ~* "/xxx\?codeOrName=" ){ rewrite ^/(.*) https://xxx.xxx.cn/xxx?name=$arg_codeOrName? break; }
以上表示通过重新url,将codeOrName参数名修改为name参数名。
其中$request_uri为带参数的url,不包含主机、端口。~*是正则匹配。注意匹配时,如果要匹配的字符传中有"?",要用反斜杠转义。
rewrite是重新url指令。
$arg_xxx指url中的xxx参数。
新url后的?表示不拼接原url中的参数,不带?则会将原来的参数拼接过来。
break指nginx重新url后,用新的url继续执行,但不返回给客户端去跳转。
通过这样的重写,实现url参数名称的修改。
当然,nginx的url重写有更多的应用场景。