我的同事最近老是抱怨我给的API非常的多,而且难以记住。
因为我的URL是这样的:
在传统的URL模式中,比如,我要参加某个活动,URL可能是POST:myapp.com.cn/1/api/12
然后,假如要获得参加计划的人的列表,URL可能是:POST:myapp.com.cn/1/api/13
这种方式显然不太妥。这是一个业务的增删改查,应该采用一个URL才可以。
我在写API的时候也遇到了这样的问题。一个增删改查会有好多的业务码。
实际上,应该使用GET方法来获取列表,使用POST来参加某个活动,使用DELETE来退出某个活动。
这才是REST风格。
真是只有经历过这些才知道人家为什么是对的啊!!!!!书本上的知识真的要去实践了,走走弯路,才知道什么是对的,什么是错的。就好像以前有人问我。数据验证是写在model层好还是controller层好。我告诉他,你每个都去试一下,自然就知道写在那个层比较好了。
但是现在我认为写在model层也并不是最好。直接分一个数据验证层才是好的。为什么?因为我实践过
看到有人没有正确理解表操作跟REST的关系,以下是我曾经在知乎回答过的一个问题,希望可以帮助理解
原题地址:http://www.zhihu.com/question/21662167/answer/18918959
我更推荐学习一下 Github 和 Dropbox 的 API 设计,个人觉得比 Twitter 要好。
唔,不了解的话,不应该先看别人是怎么做的吗,看看有没有成熟的方案,这是twitter的api结构,可以学习下。
https://dev.twitter.com/rest/public
前几天翻译的 用 JSON 构建 API 的标准指南:中文版
感谢 @bornkiller 协助翻译。
不知道你原来对于REST的理解是来源于哪本书,但多看书,同时还得看好书。
REST架构的提出者在08年写了一篇文章痛斥人们普遍对REST理解不足。而REST(Representational State Transfer/表述性状态转移)并不仅仅是HTTP协议中GET/POST/DELETE/PUT 与 DataTable中Create Read Update Delete操作的映射。
而人们之所以把RESTful理解成对表的CRUD,则可能是受到了Rails中对REST支持的影响而产生了误解。按Roy Fielding的说法,RESTful必须是超文本驱动(使用超媒体作为应用状态的引擎),但按他老人家的定义,那90%标榜REST的API都不能说自己是RESTful的,因此Richardson对REST模型做了一个分级,大部分的RESTful API集中在一级成熟度上,而Fielding论文中所描述的REST设计则属于Web-aware,分级模型中的三级。
因此在这里提醒下楼主,不是随便一个类似domain/Res/ID就能说自己是RESTful的。既然要玩REST,至少得看一次原著者的首倡论文吧,哪怕看的一知半解也不会设计出你描述中开头那段API。
顶楼主,实践出真知啊,就冲这个,不赞都不行。