今天接一个三方服务,我看到这个 url 瞬间就有点惊到了.
url = ("https://host"
"/pubkey/{}"
"/product_code/{}"
"/out_order_no/{}"
"/signature/{}").format(public_key, product_code, tradeno, sign)
效果大概就是这样的.
真是第一次见这种,哦对了,这是一个JSON
格式的POST
请求,body 部分是另一个参数.签名的算法也挺特别,就不说了,毕竟签名算法奇葩一点更安全一些...
我现在觉得自己真是见识太少.
1
dovme 2019-04-09 14:08:21 +08:00
还好吧。
|
2
gz911122 2019-04-09 14:09:43 +08:00
见过啊
github 的 api 不就这样的 |
3
lilpig 2019-04-09 14:10:12 +08:00 via Android
这不是 restfulapi 嘛
|
4
MeteorCat 2019-04-09 14:12:18 +08:00 via Android
这种好像是 path info 类型的传参方式,我记得以前好像某些支付跳转、回调不允许带有 url 参数,只能这样来伪装成伪静态来处理
|
5
murmur 2019-04-09 14:14:06 +08:00
极致的 restful
|
6
westoy 2019-04-09 14:18:08 +08:00
这不是 restful 啊, 就是通过 pathinfo 一层层映射 controller 和 action 还有参数, php 框架里默认映射出现的比较多, python 里豆瓣用的 quixote 也是这种
|
7
Vegetable OP |
9
AngryPanda 2019-04-09 14:24:46 +08:00 via Android
pathinfo 方式,很常见啊。
|
10
lihongjie0209 2019-04-09 14:29:44 +08:00
就是 restapi 啊
|
11
Luckyray 2019-04-09 14:30:15 +08:00
传参方式是非常正常的 pathinfo 模式,跟是不是 restful 没关系吧
|
12
shench 2019-04-09 14:42:01 +08:00
没见过 thinkphp 吗?哈哈~
|
13
boris1993 2019-04-09 14:52:49 +08:00 via Android
有点惊........
pubkey 和 signature 放 header 里或者 body 里不好么...... 以及 out_order_no 也放 body 里好了,URL 改成 https://host/product/out/<CODE> 感觉这么更舒服....... |
15
jasonyang9 2019-04-09 17:30:29 +08:00
记得以前讨论过的,这种写法的语义根本不对
|
16
pmispig 2019-04-09 18:00:14 +08:00
这种多半是 python 开发的
|
17
starsky007 2019-04-09 18:14:37 +08:00 via Android
/company/{}/employees
|
18
Qzier 2019-04-09 19:35:05 +08:00 via iPhone
这不很正常吗?
|
19
baojiweicn2 2019-04-09 20:21:11 +08:00 via Android
楼主少见多怪了,这个接口看上去就像是下单或者支付接口,所有家的支付接口都这样的,至于签名,我都能猜出来大概是 params 按照 ascii 码排列&拼接后面加 key 做 md5。腾讯阿里或者第三方都是这样的,楼主少见多怪了。基本原因是,这种是系统间交互,token 放 header 之类的,多数是前后端交互较多,放 body 的,post 请求较多。这种安全性没问题,交互性容易,还不用反解什么 json,这个在这种场景下才是合理的接口设计
|
20
myquestions 2019-04-10 09:12:28 +08:00
如果是 Python 的话 应该是这样的 url = "https://host" \
"/pubkey/{}"\ "/product_code/{}"\ "/out_order_no/{}"\ "/signature/{}".format(public_key, product_code, tradeno, sign) |
21
xpresslink 2019-04-10 16:07:51 +08:00
这个很正常,pyhon 的 web 框架比如 django 之类的都有很方便的提取 path 中变量的机制。
放在 path 中用 get 方式有个好处就是方便缓存。 |
22
Vegetable OP |