Questions tagged «rest»

REST(表示状态传输)是一种用于分布式超媒体系统(例如,万维网)的软件体系结构。相对于RPC体系结构(例如SOAP),由于客户端与服务器之间的固有解耦(由于异构系统之间具有统一的接口),它的流行度有所提高。

30
REST中的PUT与POST
根据HTTP / 1.1规范: 该POST方法用来请求原始服务器接受被附在请求由标识的资源的新下属实体Request-URI的Request-Line 换句话说,POST用于创建。 该PUT方法要求将封闭的实体存储在提供的之下Request-URI。如果Request-URI引用已存在的资源,则应将包含的实体视为原始服务器上资源的修改版本。如果Request-URIs指向现有资源,并且请求用户代理可以将该URI定义为新资源,则原始服务器可以使用该URI创建资源。” 即PUT用于创建或替换。 那么,应该使用哪一个来创建资源?还是需要同时支持两者?
5370 http  rest  post  put 


24
如何使用cURL发布JSON数据?
我使用Ubuntu,并在上面安装了cURL。我想用cURL测试我的Spring REST应用程序。我在Java端编写了POST代码。但是,我想用cURL对其进行测试。我正在尝试发布JSON数据。示例数据如下: {"value":"30","type":"Tip 3","targetModule":"Target 3","configurationGroup":null,"name":"Configuration Deneme 3","description":null,"identity":"Configuration Deneme 3","version":0,"systemId":3,"active":true} 我使用以下命令: curl -i \ -H "Accept: application/json" \ -H "X-HTTP-Method-Override: PUT" \ -X POST -d "value":"30","type":"Tip 3","targetModule":"Target 3","configurationGroup":null,"name":"Configuration Deneme 3","description":null,"identity":"Configuration Deneme 3","version":0,"systemId":3,"active":true \ http://localhost:8080/xx/xxx/xxxx 它返回此错误: HTTP/1.1 415 Unsupported Media Type Server: Apache-Coyote/1.1 Content-Type: text/html;charset=utf-8 Content-Length: 1051 Date: Wed, 24 Aug 2011 …

20
带请求正文的HTTP GET
我正在为我们的应用程序开发新的RESTful Web服务。 在某些实体上执行GET时,客户端可以请求实体的内容。如果他们想添加一些参数(例如,对列表进行排序),则可以在查询字符串中添加这些参数。 另外,我希望人们能够在请求正文中指定这些参数。 HTTP / 1.1似乎没有明确禁止这样做。这将使他们能够指定更多信息,可能使指定复杂的XML请求更加容易。 我的问题: 这是个好主意吗? HTTP客户端在GET请求中使用请求主体时会遇到问题吗? http://tools.ietf.org/html/rfc2616
2108 rest  http  http-get 

10
SOAP与REST(差异)
我已经阅读了有关SOAP和REST作为Web服务通信协议之间差异的文章,但是我认为REST相对于SOAP的最大优势在于: REST更动态,无需创建和更新UDDI(通用描述,发现和集成)。 REST不仅限于XML格式。RESTful Web服务可以发送纯文本/ JSON / XML。 但是SOAP更加标准化(例如:安全性)。 那么,我在这些方面是否正确?

7
API版本控制的最佳做法?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 6年前关闭。 已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 Web服务REST API版本是否存在任何已知的操作方法或最佳做法? 我注意到,AWS通过端点的URL进行版本控制。这是唯一的方法还是有其他方法可以实现相同的目标?如果有多种方法,每种方法的优点是什么?
877 rest  versioning 

14
资源已经存在时POST的HTTP响应代码
我正在构建一个允许客户端存储对象的服务器。这些对象在客户端完全构建,并带有在对象整个生命周期中永久存在的对象ID。 我已经定义了API,以便客户端可以使用PUT创建或修改对象: PUT /objects/{id} HTTP/1.1 ... {json representation of the object} {id}是对象ID,因此它是Request-URI的一部分。 现在,我也在考虑允许客户端使用POST创建对象: POST /objects/ HTTP/1.1 ... {json representation of the object, including ID} 由于POST的意思是“追加”操作,因此我不确定在对象已经存在的情况下该怎么做。我应该将请求视为修改请求还是应该返回一些错误代码(哪个)?

18
保护REST API / Web服务的最佳做法
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 2年前关闭。 在设计REST API或服务时,是否存在用于处理安全性(身份验证,授权,身份管理)的最佳实践? 在构建SOAP API时,您以WS-Security为指南,并且有关该主题的文献很多。我发现有关保护REST端点的信息较少。 尽管我了解REST故意没有类似于WS- *的规范,但我希望出现了最佳实践或推荐的模式。 任何讨论或相关文件的链接将不胜感激。如果重要的话,我们将使用WCF和POX / JSON序列化消息,以使用.NET Framework v3.5构建的REST API /服务。

8
验证失败或重复无效的REST HTTP状态代码
我正在使用基于REST的API构建应用程序,并且到了我为每个请求指定状态代码的地步。 对于未通过验证的请求,或者请求尝试在数据库中添加重复项的状态,我应该发送什么状态代码? 我已经浏览了http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html,但是似乎都不对。 发送状态代码时是否有惯例?

11
最好以JSON形式将文件和关联数据发布到RESTful WebService
这可能是一个愚蠢的问题,但我有一个夜晚。在一个应用程序中,我正在开发RESTful API,我们希望客户端将数据作为JSON发送。此应用程序的一部分要求客户端上载文件(通常是图像)以及有关该图像的信息。 我很难跟踪单个请求中的情况。是否可以将文件数据Base64转换为JSON字符串?我需要在服务器上执行2个帖子吗?我不应该为此使用JSON吗? 附带说明一下,我们在后端使用Grails,并且本机移动客户端(iPhone,Android等)可以访问这些服务(如果有区别的话)。
756 json  rest  grails  file-upload 


13
如何设置HttpClient请求的Content-Type标头?
我正在尝试根据我要调用的API 设置对象的Content-Type标头HttpClient。 我尝试设置Content-Type如下: using (var httpClient = new HttpClient()) { httpClient.BaseAddress = new Uri("http://example.com/"); httpClient.DefaultRequestHeaders.Add("Accept", "application/json"); httpClient.DefaultRequestHeaders.Add("Content-Type", "application/json"); // ... } 它允许我添加Accept标题,但是当我尝试添加Content-Type它时,抛出以下异常: 标头名称滥用。确保请求标HttpRequestMessage头与一起使用 ,响应标头与一起使用HttpResponseMessage,内容标头与HttpContent对象一起使用。 如何Content-Type在HttpClient请求中设置标题?
738 c#  asp.net  api  http  rest 



9
在REST API实际场景中使用PUT与PATCH方法
首先,一些定义: PUT在9.6节RFC 2616中定义: PUT方法请求将封闭的实体存储在提供的Request-URI下。如果Request-URI引用了已经存在的资源,则应将封闭的实体视为原始服务器上的资源的修改版本。如果Request-URI没有指向现有资源,并且请求用户代理能够将该URI定义为新资源,则原始服务器可以使用该URI创建资源。 PATCH在RFC 5789中定义: PATCH方法请求将在请求实体中描述的一组更改应用于由Request-URI标识的资源。 同样根据RFC 2616第9.1.2节, PUT是幂等的,而PATCH不是。 现在让我们看一个真实的例子。当我/users对数据执行POST {username: 'skwee357', email: 'skwee357@domain.com'}并服务器能够创建资源时,它将以201和资源位置(假设/users/1)响应,并且对GET的下一次调用/users/1将返回{id: 1, username: 'skwee357', email: 'skwee357@domain.com'}。 现在,让我们说我想修改我的电子邮件。电子邮件修改被视为“一组更改”,因此我应该/users/1使用“ 补丁文档 ”来进行修补。在我的情况下,它将是json文档:{email: 'skwee357@newdomain.com'}。然后,服务器返回200(假设允许)。这使我想到第一个问题: 补丁不是幂等的。它在RFC 2616和RFC 5789中是这样说的。但是,如果我发出相同的PATCH请求(使用我的新电子邮件),我将获得相同的资源状态(将我的电子邮件修改为请求的值)。为什么PATCH不那么幂等? PATCH是一个相对较新的动词(2010年3月引入RFC),用于解决“修补”或修改一组字段的问题。在引入PATCH之前,每个人都使用PUT来更新资源。但是在引入PATCH之后,我对PUT的用途感到困惑。这使我想到了第二个(也是主要的)问题: PUT和PATCH之间的真正区别是什么?我在某处读到了PUT可能用于替换特定资源下的整个实体,因此应该发送完整的实体(而不是像PATCH那样发送一组属性)。这种情况的实际实际用途是什么?您何时要替换/覆盖特定资源URI上的实体,为什么不考虑将此类操作更新/修补该实体?我在PUT上看到的唯一实际用例是在集合上发布PUT,即/users替换整个集合。引入PATCH之后,在特定实体上发布PUT毫无意义。我错了吗?
680 json  rest  http  put  http-method 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.