我正在构建一个到处使用JSON的web服务。
现在,我需要一个HTTP方法来检索资源的属性(例如,属性如只读、写、ACL等等)。看起来只有一个HTTP方法用于这个目的:PROPFIND。
然而,规格明确地指示使用XML。
用那个带有JSON接口的动词是不是太疯狂了?我还担心PROPFIND是WebDAV扩展的一部分。
如果这是不接受的,那么推荐的动词是什么,还是推荐的在面向JSON的web服务中检索资源属性的方法?
发布于 2016-05-17 17:23:08
在“具象状态转移”体系结构中,其思想是:
GET和HEAD是安全的,PUT和DELETE是幂等的),因此,使用HTTP中定义的谓词以外的其他谓词是个坏主意。事实上,每个WebDAV谓词都可以使用HTTP谓词(以及适当的头和资源)来完成。
在RESTful世界中,您有几种选择:
HEAD谓词)。发布于 2016-05-17 19:21:58
REST与协议无关,但它通常是通过HTTP协议实现的。WebDAV是HTTP的扩展。因此,理论上您也可以使用WebDAV方法 (这并不意味着您应该使用)。
来自菲尔丁的第六章论文:
6.3.1.2可扩展的议定书要素 ..。HTTP请求语义由请求方法名称表示。每当可以在客户端、服务器以及它们之间的任何中介之间共享可标准化的语义集时,就允许进行方法扩展。..。
保持简单,并坚持使用标准的HTTP方法:它们是众所周知的,并且得到了大量客户端和代理的支持。
请参阅下面几种使用HTTP谓词从资源中获取元数据的方法:
使用子资源
您可以为要请求一些元数据的资源提供一个metadata子资源。例如,要获取用户资源的元数据,它将非常简单,如:
GET /api/users/johndoe/metadata HTTP/1.1
Host: example.com
Accept: application/json使用自定义媒体类型
您可以考虑的另一种方法是用于表示资源元数据的自定义媒体类型(如application/vnd.company.metadata+json )。因此,您将得到如下内容:
GET /api/users/johndoe HTTP/1.1
Host: example.com
Accept: application/vnd.company.metadata+json使用这种方法,同一个端点可以支持其他媒体类型,如application/json和/或application/vnd.company+json,以返回数据本身:
GET /api/users/johndoe HTTP/1.1
Host: example.com
Accept: application/jsonGET /api/users/johndoe HTTP/1.1
Host: example.com
Accept: application/vnd.company+json如果需要,可以使用另一种媒体类型(如application/vnd.company.full+json )请求资源的数据和元数据:
GET /api/users/johndoe HTTP/1.1
Host: example.com
Accept: application/vnd.company.full+json`GitHub API也使用了类似的方法。
发布于 2016-05-19 09:47:26
当您尝试制作HTTP服务时,当然也有一些方法可以在HTTP报头中使用。此外,还有许多属性属性,其中包含有关请求/响应的信息,如"status“、”Content“等。
还可以在web服务中设置这些属性。喜欢
“内容-类型”:“应用程序/json”;
在这里,当您在任何“请求/响应”中设置此属性时,这意味着您只允许“请求/响应”中特定的MIME类型数据。
我对HTTP /Response有基本的理解,我希望这个信息将帮助您,请检查并确保您提供了与内容相关的设置和适当的MIME类型。
否则,您可以按照这个链接www.webdev.org。
https://stackoverflow.com/questions/36911449
复制相似问题