REST URI相对于查询字符串格式的URI的优势



全部,

对于我们已经开始的一个新项目。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样式在资源管理

的完整上下文中确实有意义

最新更新