有两套客户端,共用了同一个接口服务,通过Http方式交互,现在需要将两套客户端对应的接口服务分离。由于请求的uri完全一致,调用的接口也完全一致,只有Http头里面有一个字段,用来区分是来自哪个客户端的请求。于是考虑根据这个Http头字段来进行请求分发,不同的客户端对应到不同的服务端。
写了个简单的配置示例(nginx.conf),证实该方案是可行的:
location / { if ($http_t = "163"){ proxy_pass http://163.com; } if ($http_t = "baidu"){ proxy_pass http://baidu.com; } root html; index index.html index.htm; }
其中$http_为nginx配置文件中获取Http头字段的默认前缀,例如Http头中有个字段为t,那么$http_t就为该字段对应的值。当该值为163的时候,直接跳转到163网站,当该值为baidu的时候,直接跳转到百度网站。
处理完该事情后,对Http JSON接口协议的制定也有了一些新的认识,对于全局性的字段,建议放到Http头中进行传递,因为不需要解析包体就可以对该请求做一些简单分析和处理。对于接口相关性的字段,可以放在JSON包体中进行传递。