情景介绍
假设你做了一套后台系统
其中有一个订单查询接口
公司有两个产品需要对接你这个接口
产品A: 我想需要已支付订单和待退款订单,你给我未支付,已完成的有啥用?
产品B: 我只需要待退款和已退款,你给我已支付,已完成的干嘛?
这种情况怎么处理?
毕竟是一个get请求。
那不简单,我们给不同产品写个不同的查询接口呗。
那假设后面再来两个产品,你就再加两个接口?
明显不太合理。
那咋办呢?
request.args.getlist('')
是的 getlist()
可以批量获取get请求中url上面拼接的key值一样的参数,组合成列表
大佬的描述如下
客户端请求的时候一般来说,给网络库传数组就行了
比如 requests.get('https://example.com/orders', params={'state': ['created', 'paid']}) 就会请求
https://example.com/orders?state=created&state=paid
不过不同的库在数组上的处理方式会有不同,常见的结果是变成 ?state=created&state=paid 或者 ?state[]=created&state[]=created,不过一般都是可以通过配置网络库选择不同的形式。如果要支持后者,需要通过 request.args.getlist('state[]') 获取
如果客户端可以设置成不带方括号的形式最好,客户端用的网络库不支持改的话,就要两个都支持一下(state 拿得到就用 state,拿不到就试试 state[])
大概理解为get请求可以传递多个同名但是不同值的参数,并且前端有语法可以实现。
然后使用 getlist()可以获取所有同名参数。
这样不同的产品可以主动传不同的状态,一个接口解决。
果真不错,,,,,
以上