为了账号安全,请及时绑定邮箱和手机立即绑定

关于 RESTful 风格接口一些小疑问

关于 RESTful 风格接口一些小疑问

宝慕林4294392 2019-05-12 12:24:04
写接口时候参考了restful风格,阮一峰RESTfulAPI设计指南有如下例子GET/zoos:列出所有动物园POST/zoos:新建一个动物园GET/zoos/ID:获取某个指定动物园的信息PUT/zoos/ID:更新某个指定动物园的信息(提供该动物园的全部信息)PATCH/zoos/ID:更新某个指定动物园的信息(提供该动物园的部分信息)DELETE/zoos/ID:删除某个动物园GET/zoos/ID/animals:列出某个指定动物园的所有动物DELETE/zoos/ID/animals/ID:删除某个指定动物园的指定动物但实际应用上,并没有这么简单,比如有接口:列出所有所有动物:path是/zoos/all/animals/all还是/animals,按接口目的来看,我只关心动物/animals好像更合适,但与/zoos/ID/animals功能有重合,后台要维护两个路由列出有大熊猫动物园:path怎么写,列出所有海洋动物园所有动物:path怎么写,实际接口中筛选条件通常会很多,而且并不会像国>省>市>区>路这样一级一级地缩小范围,这种情况下,传统方式写接口似乎就非常简单,getZoos?city=广州&anamal_type=大熊猫getZoos?zoo_type=海洋馆getAnimals?anamal_type=海洋生物接口初期,功能简单,用restful非常优雅,但是功能复杂起来了,觉得好像不太适用,而且接口版本也没达到经升级的程度,就会有两种写法并存,好尴尬!你们是怎么做的!有没有功能复杂一点的restful例子?
查看完整描述

2 回答

?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

你也没必要非要在/zoos/ID/animals/ID这样写啊不能有动词不代表不让你用参数啊也可以用一些参数进行过滤
POST/getZoos
POST/saveZoos
POST/removeZoos
get/zoos
POST/zoos
DELETE/zoos
例如,从账户1向账户2汇款500元下面这样写肯定不行
POST/accounts/1/transfer/500/to/2
可以这样
POST/transaction
  from=1&to=2&amount=500.00
                            
查看完整回答
反对 回复 2019-05-12
?
墨色风雨

TA贡献1853条经验 获得超6个赞

我会这么设计
列出所有所有动物:/zoos/animals列出有大熊猫动物园:/zoos?animal=panda列出所有海洋动物园所有动物:/zoos/animals?zootype=sea
列出没有大熊猫动物园:/zoos?animal=!panda列出有大熊猫和老虎的动物园:/zoos?animal=panda,tiger列出有大熊猫或老虎的动物园:/zoos?animal=panda|tiger列出没有大熊猫但是有老虎的动物园:/zoos?animal=!panda,tiger
                            
查看完整回答
反对 回复 2019-05-12
  • 2 回答
  • 0 关注
  • 458 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号