全部,
对于我们已经开始的一个新项目。NET中,我们希望使用纯REST。因此我们选择了。NET Web API,已作为的一部分发布。NET Framework 4.5(而不是WCF),并考虑到它支持纯REST性质。但是,当我们根据需求进行更多探索时,我们意识到它没有提供类似REST的URL格式的URI模板支持。我们仍然可以,因为我们对WebAPI具有查询字符串类型的格式没有太大的不满。
当我们加入一个新团队时,他们开始强制要求他们只需要REST类型的URL格式,因为这是标准规范和喜欢的格式。
当被问及执行情况时,他们只是提到这是一个标准,我们必须遵守它,但这并没有说服我
所以,我很想知道REST体系结构提供了什么开箱即用的功能?还有查询字符串格式的URI不符合REST方法的条件吗?
REST URI:http://myapplicationdomain.com/apps/appId
查询字符串URI:http://myapplicationdomain.com/GetAps/appId={appId}
提前谢谢。
REST不仅仅是URL格式,而且REST不会限制您使用参数。
REST理念的一部分是识别资源,因此您的源具有URL,并且HTTP谓词(Get、Post、Delete、Put等)在此资源上定义操作。您仍然可以使用参数,例如
http://myappfomain.com/product/?page=1&pageSize=10
它是对产品列表的GET请求(因为没有指定ID),并且在查询字符串中指定了分页/排序条件。这是完全正确的。
或
http://myappdomain.com/product/123/?format=json
在这里,您访问ID为od#123的产品,但请求将其作为JSON返回。它也很好。
从这个角度来看,资源有自己的URL更符合逻辑。参数可能会增加一些细节。
这样看:URI定义主题HTTP谓词定义操作(要做什么)查询参数提供了一些细节(如何操作)
希望能有所帮助。
URI的REST(请参阅wiki Representational state transfer)"样式"是有原因的。维基摘录:
统一接口
…
资源标识在请求中标识单个资源,例如在基于web的REST系统中使用URI。。。。通过这些表示对资源的操作当客户端持有资源的表示时。。。它有足够的信息来修改或删除服务器上的资源。。。
我用这些引用很好地解释了这样一个事实,即REST风格的URI实际上是关于资源标识的。我们可以有
1) DB中的表和
2) 允许
3) 更新或删除记录。
REST中的URI也做同样的事情:
1) 标识资源类型(实体/表)
2) 识别资源ID
3) 设置操作
HTTP Method URI Operation
GET ResourceTypeResourceId SELECT, READ
POST ResourceType INSERT, Add, create new
PUT ResourceTypeResourceId UPDATE the record with ResourceID
DELETE ResourceTypeResourceId DELETE that record
因此,正如我们所看到的,RESTURI样式在资源管理