当前位置:  开发笔记 > 前端 > 正文

我的网络服务是RESTFUL吗?

如何解决《我的网络服务是RESTFUL吗?》经验,为你挑选了1个好方法。

我有一个REST Web服务,它暴露了两种方法 -

    [POST方法]客户端将以XML的形式提供对象列表.我的Web服务方法将根据对象[mode = insert/update]中的一个属性插入/更新对象列表,并返回带有对象列表及其状态的XML [无论插入/更新是否成功].

    [POST方法]它将接受一个objectIds列表,并以XML的形式从服务器返回这些对象的状态.

我知道我们应该使用

用于检索信息的GET方法

用于创建新条目的POST方法

用于更新现有条目的PUT方法.

我知道我们的实现违反了一些REST约束,但我们的要求迫使我们以这种方式实现它.

我的问题是 - 弯曲约束以适应我们的要求是否可以?



1> Darrel Mille..:

您正在尝试做的事情可以完成RESTful.尽管POST通常用于向集合添加单个实体,但它也可用于将一大块数据提交给"数据处理资源".这几乎打开了通过POST做任何你想做的事情的大门.

人们经常误解REST约束,并认为你必须使用PUT和DELETE才能成为RESTful.不是这种情况.不需要使用所有方法.唯一的要求是不要滥用您使用的那些.

显然,如果您将单个实体发布到集合以创建实体,那么对API的用户来说会更直观.但是,如果这对您来说不是一个可行的选项,那么您可以自由定义一个新的媒体类型,该媒体类型可以包含一些要由某些数据处理资源创建/更新的对象.

重要的是明确这些规则.您应该创建一个新的媒体类型,application/vnd.yourcompany.objectlist+xml您需要编写有关如何构建该媒体类型的文档.

现在您已经定义了媒体类型,您的客户端将需要知道POST该对象列表的位置.理想情况下,您将定义一个新的链接关系(例如objectprocessor),可以在其他文档中使用它来提供POST到的URL.在链接关系的规范文档中,您应该向客户端开发人员解释,当您application/vnd.yourcompany.objectlist+xml将链接发布到具有链接关系的链接时,objectprocessor将会发生的是x,y和z.

假设您的根URL返回了某种类似的XHTML文档:


  

My awesomely restful service that can create objects in batches

客户端应用程序可以处理此文档,发现此链接并根据链接关系定义了解它需要POST a application/vnd.yourcompany.objectlist+xml到href中指定的端点.

通过这种方式,消息是完全自我描述的,您正在与使用可发现的URL标识的资源进行交互,并且您在统一接口的规则范围内.

推荐阅读
女女的家_747
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有