RESTful在这种情况下应该怎么设计?
根据RESTful的理念,比如我对订单对象进行RESTful风格的API设计如下:
GET: /order 列出所有订单
POST: /order 创建一个订单
PUT: /order/ID 更新一个订单(全部信息)
PATCH: /order/ID 更新一个订单(部分信息)
现在有这样的应用场景:订单的价格会有修改,订单的状态会有修改,但是这些修改是需要一定条件的(比如订单状态是10的时候才能修改订单状态为20)。那么我的Controller和Action应该怎么设计呢?
比如现在要更新订单价格,我应该调用的是 PATCH: /order/ID,然后请求时携带的json数据是一个封装好的Order对象,服务器接到json数据后,转换成Order对象。但是我怎么知道这个动作是要修改订单价格的呢?因为如果修改订单价格是需要做一些判断的。
如果是更新订单状态呢?我怎么去区分具体是更新什么内容呢?
我应该将修改订单价格和修改修改状态的操作分别设计成不同的Controller中的Action呢,还是就一个统一的 update Action呢?
或者哪位大侠有设计比较好的RESTful范例给我看看,弄不太明白了。RESTful在设计上避免动词,而以前写Controller的时候就是按照action动作来写的,思路有点转变不过来啊!
跪求高手啊!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(15)
我觉的啊,,,知道了get,put,post做什么样的事情就可以了,,,,多写几个修改的controller最好了,万能接口万能controller什么的最讨厌了。。。。
楼下正解.
送你一张图, 也许你就懂了
根据对应的情况, 写多个controller 方法就好了. 打个比方
伪代码,参数神马的,自己折腾下...
不知道是不是我理解错你的意思了= =;;;
引用来自“Nick_路”的评论
送你一张图, 也许你就懂了
根据对应的情况, 写多个controller 方法就好了. 打个比方
伪代码,参数神马的,自己折腾下...
不知道是不是我理解错你的意思了= =;;;
/order/ID/price
怎么判断啊?检测Json对象的属性值吗?这样的话这个action的判断就太多了,因为order很多属性都是可以修改的,难道每个都要判断吗?
引用来自“酱哥哥”的评论
了解了规范,你就应该知道如何去处理你需要处理的数据了。PATCH修改个别属性,当然就只传需要修改的字段
了解了规范,你就应该知道如何去处理你需要处理的数据了。PATCH修改个别属性,当然就只传需要修改的字段
首先,你理解的对了,其次,发现你又纠结又古板。你可至于针对每个字段都做个修改的方法?如果一次性修改2个参数或者3个参数呢?好了,不说了,controller怎么实现是你的事情了。
非常感谢你的耐心解答,是啊,我的确是有些古板和纠结,性格缺陷啊,呵呵。不过你能这么耐心给我解答,看来你是个很好的老师。非常感谢。我再琢磨琢磨,我学东西比较慢,理解的也慢,我一般都是反复练习,反复琢磨才能学会,不好意思啊。
引用来自“酱哥哥”的评论
了解了规范,你就应该知道如何去处理你需要处理的数据了。PATCH修改个别属性,当然就只传需要修改的字段
我的意思是,客户端传来的值是不确定的,有可能是订单的状态,有可能是订单的价格,我怎么去区分啊?因为同一个url最后进入的是同一个Controller中的同一个action啊
回复
带一些标识数据过来区分啊。还有,去看一下 Restful 的那篇论文,绝对的 Restful 在现阶段是没有办法实现的,很多时候都要折中。
回复
显然传递过来的键必须是规范的才行。
引用来自“酱哥哥”的评论
了解了规范,你就应该知道如何去处理你需要处理的数据了。PATCH修改个别属性,当然就只传需要修改的字段