Questions tagged «rest»

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

6
我该如何处理HTTP GET查询字符串的长度限制,并且仍然希望成为RESTful?
如http://www.boutell.com/newfaq/misc/urllength.html中所述,HTTP查询字符串的长度有限。它可能受客户端(Firefox,IE等),服务器(Apache,IIS等)或网络设备(应用防火墙等)的限制。 今天,我用搜索表来面对这个问题。我们开发了一个包含很多字段的搜索表单,该表单作为GET请求发送到服务器,因此我可以将结果页面添加为书签。 我们的字段太多,查询字符串的长度为1100个字节,而防火墙则丢弃了超过1024个字节的HTTP GET请求。我们的系统管理员建议我们改用POST,因此没有限制。 当然,POST可以工作,但是我真的觉得搜索是GET而不是POST。因此,我想我将检查我们的字段名称,以确保查询字符串不会太长,如果不能,我将务实并使用POST。 但是RESTful服务的设计是否存在缺陷?如果GET请求的长度有限,该如何将大型对象发送到RESTful Web服务?举例来说,如果我有一个程序,使基于文件的计算,我想提供一个RESTful Web服务这样的:http://compute.com?content=<base64 file>。这将不起作用,因为查询字符串没有无限的长度。 我有点困惑
84 http  rest 

11
您使用什么工具来测试您的公共REST API?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 6年前关闭。 改善这个问题 寻找用于测试REST API的工具。 到目前为止,我只知道SoapUI。我已经尝试过SOAPUI,但是-至少在Mac中-这太糟糕了。 想知道人们正在使用什么来测试自己的API。

10
Google App Engine Java上的RESTful应用程序?
我想在Google App Engine上创建一个RESTful应用。我想提供XML和JSON服务。我已经对Restlet,Resteasy和Jersey进行了简短的实验。除了Restlet中的一些简单示例之外,我在其中的任何方面都没有取得太大的成功。 您能否分享使用Java在Google App Engine上创建Restful Web应用程序的经验或对上述GAE工具包有任何见解? 谢谢! 编辑(2009-07-25): 我决定暂时使用Restlet。到目前为止,它似乎可以正常工作。请发布您可能有的其他见解/意见。您遇到了什么问题?您是否已在GAE / J上成功使用Jersey / Restlet / Resteasy?如果是这样,我们想听听!

5
来自RESTful API的分页响应有效负载
我想在我的RESTful API中支持分页。 我的API方法应通过返回产品的JSON列表/products/index。但是,可能有成千上万种产品,我想分页浏览它们,因此我的请求应如下所示: /products/index?page_number=5&page_size=20 但是我的JSON响应需要什么样?API使用者通常会在响应中期望分页元数据吗?还是仅需要一系列产品?为什么? 看起来Twitter的API包含元数据:https://dev.twitter.com/docs/api/1/get/lists/members(请参阅示例请求)。 使用元数据: { "page_number": 5, "page_size": 20, "total_record_count": 521, "records": [ { "id": 1, "name": "Widget #1" }, { "id": 2, "name": "Widget #2" }, { "id": 3, "name": "Widget #3" } ] } 只是一系列产品(没有元数据): [ { "id": 1, "name": "Widget #1" }, { "id": …
83 rest  pagination 

3
令牌已过期-JSON REST API-错误代码
我有一个JSON REST API。握手会给您一个有效期为15分钟的令牌。您在这15分钟内拨打的所有电话都可以正常运行。15分钟后,我返回一个错误对象(包括代码,消息,成功= false),但我也想知道应该返回什么HTTP错误代码?并且使用HTTP错误代码会使某些客户端混乱吗?(HTML5,iPhone,Android)。在这种情况下,什么是最佳实践?


8
需要实现Virgil Dobjanschi REST实现模式的示例Android REST Client项目
我想在Android手机上构建REST客户端。 REST服务器公开了多个资源,例如(GET) http://foo.bar/customer List of all customer http://foo.bar/customer/4711 The customer with id 4711 http://foo.bar/customer/vip List of all VIP customer http://foo.bar/company List of all companys http://foo.bar/company/4711 The company with the ID 4711 http://foo.bar/company/vip List of all VIP companys 我(认为)我知道如何与REST服务器对话并获取所需的信息。我将使用这样的API实现REST Client类 public List<Customer> getCustomers(); public Customer getCustomer(final String id); public List<Customer> getVipCustomer(); …

10
如何编写REST API?
我正在将iPhone应用程序写为一个业余项目,它将需要一个Web服务来为其提供数据。它与我在工作中没有太大区别,但是在工作中我只编写视图和控制器。其他人负责编写模型,通常由客户提供Web服务。 以前,当每个人都使用MySQL和PHP时,我已经做过一些Web编程,所以我的技能有些过时了,但是我有信心,我可以使用我已经知道的技术来完成它。但是,我不想浪费时间使用过时的工具。我发现最新的技术是编写REST API。我当时认为应该有一些不错的框架,一旦定义了模型,它们几乎只会为您提供具有CRUD功能的REST API。 我想我的问题是:建立和运行REST API的最快方法是什么?我真的只想专注于编写iPhone应用程序,而不要花太多时间在此API上。如果我也能获得Web管理和修订历史记录,那将是很棒的。我还应该补充一点,该API不应公开,因此对身份验证的支持也将非常出色。 只是要清楚。我不介意PHP框架。实际上,它可能会更好,因为我知道我当前的主机支持它。
82 php  iphone  mysql  rest 

4
是否在HTTP标头或响应正文中保留错误消息?
我有一个面向iPhone和Android客户端的REST服务。目前,我遵循HTTP代码200、400、401、403、404、409、500等。 我的问题是,将错误的原因/描述/原因放在哪里?像这样,让REST API始终在标头中始终具有自定义的原因是否更有意义? < HTTP/1.1 400 Bad Request - Missing Required Parameters. < Date: Thu, 20 Dec 2012 01:09:06 GMT < Server: Apache/2.2.22 (Ubuntu) < Connection: close < Transfer-Encoding: chunked 还是通过JSON将其包含在Response Body中更好? < HTTP/1.1 400 Bad Request < Date: Thu, 20 Dec 2012 01:09:06 GMT < Server: Apache/2.2.22 (Ubuntu) < …
82 http  rest  http-error 

5
自定义授权HTTP标头
当客户端向API发送请求时,我需要对客户端进行身份验证。客户端具有API令牌,我正在考虑使用标准Authorization标头将令牌发送到服务器。 通常,此标头用于Basic和Digest身份验证。但是我不知道是否允许自定义此标头的值并使用自定义的身份验证方案,例如: Authorization: Token 1af538baa9045a84c0e889f672baf83ff24 你会推荐吗?还是有更好的发送令牌的方法?

4
泽西岛客户端:如何添加列表作为查询参数
我正在为具有List作为查询参数的GET服务创建Jersey客户。根据文档,可以将List作为查询参数(此信息也位于@QueryParam javadoc中),将其检出: 通常,方法参数的Java类型可以: 是原始类型; 有一个接受单个String参数的构造函数; 有一个名为valueOf或fromString的静态方法,该方法接受单个String参数(例如,请参见Integer.valueOf(String)和java.util.UUID.fromString(String));要么 是List,Set或SortedSet,其中T满足上面的2或3。结果集合为只读。 有时参数可能包含多个相同名称的值。如果是这种情况,则可以使用4)中的类型来获取所有值。 但是,我不知道如何使用Jersey客户端添加List查询参数。 我了解替代解决方案是: 使用POST而不是GET; 将List转换为JSON字符串,并将其传递给服务。 第一个不好,因为该服务的正确HTTP动词是GET。这是一个数据检索操作。 如果您不能帮我,第二个将是我的选择。:) 我也在开发服务,因此我可以根据需要进行更改。 谢谢! 更新资料 客户端代码(使用json) Client client = Client.create(); WebResource webResource = client.resource(uri.toString()); SearchWrapper sw = new SearchWrapper(termo, pagina, ordenacao, hits, SEARCH_VIEW, navegadores); MultivaluedMap<String, String> params = new MultivaluedMapImpl(); params.add("user", user.toUpperCase()); params.add("searchWrapperAsJSON", (new Gson()).toJson(sw)); ClientResponse clientResponse = …
81 java  rest  jersey 


3
如果用户尝试使用不正确的用户名/密码但格式正确的登录,返回什么合适的HTTP状态代码?
这里发布了一个类似的问题:REST API服务针对验证失败返回什么合适的HTTP状态代码? 上面线程中的答案指出:“例如,如果URI应该具有ISO-8601日期,而您发现它的格式错误或引用的日期是2月31日,则您将返回HTTP 400。实体主体中格式正确的XML,并且无法解析。” 但是,如果用户提交了正确格式的数据会怎样?我的意思是,用户为用户名和密码提交了简单的字母字符串/文本(这对我的应用程序完全有效)。唯一的问题是密码与用户名不匹配。在这种情况下,400将是不正确的,因为它是完全有效的语法并且格式正确。 401不正确(如此处的建议:哪个HTTP状态代码表示用户名或密码不正确?),因为用户没有尝试访问任何页面,他只是在尝试登录和输入不匹配的数据。 如果您回头看我链接到的第一篇文章,第二个回答指出422是正确的响应(并且对我来说看起来是正确的),但是,我使用的是Django Rest Framework,而422不是状态代码的一部分(可以在以下位置找到DRF的一部分状态代码列表:http : //www.django-rest-framework.org/api-guide/status-codes/#client-error-4xx) 404的外观也不正确,因为已成功接受数据并且未拒绝数据。 话虽如此,应该使用的真正正确答案是什么?


8
使用WADL的原因是什么?
为了描述RESTful,我们可以说每个资源都有自己的URI。使用HTTP GET,POST,PUT和DELETE,我们可以对这些资源进行操作。所有资源均具有代表性。任何想要使用我们资源的人都可以通过浏览器或REST客户端来使用。 这是RESTful架构的主要思想。这种体系结构允许Internet上的服务。那么为什么这种架构需要WADL?WADL提供了哪些标准HTTP不提供的东西?为什么WADL需要存在?
80 rest  wadl 

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.