Restful API 纠结之处
2018-10-19 本文已影响0人
monvhh
简介Restful API
请求路径“终点”(endpoint),以资源(resource)为单位。
以HTTP方法为请求资源的动作。比如get就是拿资源,post就是新建资源,put是更新资源。
过滤信息在请求路径中以querystring的方式存在,eg. ?limit=10&type=1
看起来很美,实践起来?
问题1 实际的API很难明确定义资源
经常有需要将不同资源糅合在一个API返回,现实生活中的场景总是比理想状态更复杂。
可能对服务层类似于SOA服务,会相对可用一点。
对于面对终端的接口,终端当然希望少发http请求,这样不可避免要糅合。
问题2 有的资源Get时,不是通过简单的id,而是复杂一坨参数
比如 查航班列表,需要日期、出发地到达地、舱位
如果是多程,还有一个数组的出发地到达地出发时间到达时间,目前查第几程等等
这querystring,会很长(先不考虑超长和安全性),而且,get传参,通过querystring,
首先数组得通过特殊方式处理传参和接收参数(express原生好像就处理过接收到的参数了);
其次后端拿到的每个字段,都将是字符串,就算是JSON.parse,对象中的每个字段还是字符串,所以前端传的true,你收到的是‘true‘。
在语义化和实用性之间,便很纠结。