Questions tagged «rest»

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

16
Spring MVC @PathVariable被截断
我有一个控制器,可提供对信息的RESTful访问: @RequestMapping(method = RequestMethod.GET, value = Routes.BLAH_GET + "/{blahName}") public ModelAndView getBlah(@PathVariable String blahName, HttpServletRequest request, HttpServletResponse response) { 我遇到的问题是,如果我使用带有特殊字符的路径变量访问服务器,则会被截断。例如: http:// localhost:8080 / blah-server / blah / get / blah2010.08.19-02:25:47 参数blahName将为blah2010.08 但是,对request.getRequestURI()的调用包含所有传入的信息。 任何想法如何防止Spring截断@PathVariable?
142 java  spring  rest  spring-mvc  get 

5
RestSharp JSON参数发布
我试图对我的MVC 3 API进行非常基本的REST调用,而我传入的参数未绑定到action方法。 客户 var request = new RestRequest(Method.POST); request.Resource = "Api/Score"; request.RequestFormat = DataFormat.Json; request.AddBody(request.JsonSerializer.Serialize(new { A = "foo", B = "bar" })); RestResponse response = client.Execute(request); Console.WriteLine(response.Content); 服务器 public class ScoreInputModel { public string A { get; set; } public string B { get; set; } } // …

7
何时在RESTful API中使用路径参数与查询参数?
我想使我的RESTful API非常可预测。确定何时使用URI而不是使用查询参数对数据进行分段的最佳实践是什么? 对我来说,支持分页,排序和分组的系统参数应该位于“?”之后 但是,诸如“状态”和“区域”之类的字段或对您的收藏进行细分的其他属性呢?如果这些也要用作查询参数,那么知道何时使用路径参数的经验法则是什么?

5
HATEOAS(REST体系结构)的实际示例
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 正如每个人都可能注意到的那样,在野外有很多伪造的/基本的REST-API(它们实现了HTTP-API并称为REST,而没有遵循应用程序状态的超文本作为引擎的要求,这导致了向最先指定REST范例的人Roy T. 我一直找不到真正的超文本驱动的REST实现以及状态转换相关的特定于应用程序的媒体类型定义的任何实际示例。 是否有此类实施的可公开访问的示例?
140 api  rest  hateoas 


2
使用OAuth保护我的REST API,同时仍然允许通过第三方OAuth提供程序进行身份验证(使用DotNetOpenAuth)
我有一个带有简单REST API的产品,因此该产品的用户可以直接与该产品的功能集成,而无需使用我的Web用户界面。 最近,我吸引了许多第三方的兴趣,他们希望将其桌面客户端与API集成在一起,以允许我的产品的用户使用该第三方应用程序访问其数据。 我已经看到要使用Twitter的应用程序通过Twitter托管的登录页面进行身份验证,该登录页面授予特定的应用程序访问该用户数据的权限。单击“允许”或“拒绝”按钮,身份验证过程完成。Facebook尽我所能使用相同的机制。 经过进一步研究,这似乎是在使用OAuth,并且由于我的API基于.Net,所以我认为我应该使用DotNetOpenAuth并提供类似的机制。不幸的是,样本很少被记录(如果有的话),而我在网上可以找到的唯一教程似乎集中在帮助您为用户提供登录机制,以便他们可以使用第三方提供商登录到您的网站。 我真正想做的是让我的REST API处理我的Web应用程序的所有核心身份验证和业务逻辑,并且实际上,我的Web应用程序本质上是另一个仅通过OAuth使用API​​的应用程序。用户将直接使用其用户名和密码或通过第三方提供商(例如MyOpenID或Facebook)在网站上进行身份验证,然后网站将以某种方式使用返回的令牌对REST API进行身份验证。 基本上,我需要我的API才能以某种方式托管OAuth服务,但也需要用户使用第三方OAuth服务。我忍不住想,我对OAuth的掌握不足,无法决定我是否使事情变得过于复杂,或者我试图做的事是做事的好坏。 有人可以至少给我提供我需要采取的步骤的广泛概述,或者我应该怎么看才能实现这一目标?还是让我指点一些教程?还是高估我的建议,并告诉我我正在(架构上)解决所有错误?

12
返回对象中项目总数的最佳RESTful方法是什么?
我正在为一个涉及的大型社交网站开发REST API服务。到目前为止,它的运行状况很好。我可以发出GET,POST,PUT和DELETE请求对象的URL和影响我的数据。但是,将分页此数据(一次最多限制30个结果)。 但是,通过我的API获取会员总数的最佳RESTful方法是什么? 目前,我向以下网址结构发出请求: / api / members-返回成员列表(如上所述一次30个) / api / members / 1-影响单个成员,具体取决于所使用的请求方法 我的问题是:然后我将如何使用类似的URL结构来获取应用程序中的成员总数?显然仅请求id字段(类似于Facebook的Graph API)并计算结果是无效的,因为只会返回30个结果中的一部分。
138 rest  restful-url 

11
Spring MVC-如何在Rest Controller中将简单字符串作为JSON返回
我的问题实质上是对该问题的后续行动。 @RestController public class TestController { @RequestMapping("/getString") public String getString() { return "Hello World"; } } 在上面,Spring会将“ Hello World”添加到响应正文中。如何返回String作为JSON响应?我知道我可以添加引号,但这感觉更像是黑客。 请提供任何示例以帮助解释此概念。 注意:我不希望直接将其写到HTTP响应正文中,我想以JSON格式返回字符串(我将控制器与RestyGWT一起使用,这要求响应必须为有效JSON格式)。
137 java  json  spring  rest  spring-mvc 

11
如何将多个参数传递给ASP.Net Web API GET?
我正在使用.Net MVC4 Web API来(希望)实现RESTful api。我需要向系统传递一些参数,并让它执行一些操作,然后返回对象列表作为结果。具体来说,我传递了两个日期并返回了两个日期之间的记录。我还跟踪返回的记录,以便后续调用不会在系统中得到重新处理。 我考虑了几种方法: 将参数序列化为一个JSON字符串,然后在API中将其分离。 http://forums.asp.net/t/1807316.aspx/1 在查询字符串中传递参数。 将多个查询参数传递给静态API的最佳方法是什么? 定义路径中的参数:api / controller / date1 / date2 使用POST可以使我通过参数传递对象。 由于Web API(当前)支持ODATA,因此正在研究ODATA。我还没有做很多事情,所以我不太熟悉。 似乎正确的REST做法表明何时提取数据,应该使用GET。但是,GET也应该是无效的(不产生副作用),并且我想知道我的具体实现是否违反了该规定,因为我在API系统中标记了记录,因此产生了副作用。 这也使我想到了支持可变参数的问题。如果输入参数列表发生更改,那么如果必须经常为选择3重新定义您的路线,那将很麻烦。如果在运行时定义参数会发生什么... 无论如何,对于我的特定实现,哪种选择(如果有)似乎最好?

4
REST,HTTP DELETE和参数
向HTTP DELETE请求提供参数是否有非RESTful功能? 我的情况是,我正在建模“确定要删除吗?” 场景。在某些情况下,资源的状态表明所请求的删除可能无效。您可能自己想像一些需要确认删除的情况 我们采用的解决方案是将参数传递给delete请求,以指示可以继续进行删除(“?force_delete = true”) 例如 DELETE http://server/resource/id?force_delete=true 我认为自从以下原因以来,它仍然令人放松: (a)DELETE的语义未更改-用户仍然可以发送普通的DELETE请求,但此操作可能会失败并显示409,响应主体将说明原因。我说这可能会失败,因为(出于不值得解释的原因)在某些情况下没有理由提示用户。 (b)Roy的论文中没有任何东西表明它与REST的精神背道而驰-为什么会这样,因为HTTP只是REST的一种实现,所以为什么传递HTTP参数会很重要 有人可以指出明确的陈述,说明为什么它不是RESTful的吗? 关于一个相关的问题,如果用户未指定force_delete,那么我正在返回409 Conflict-这是最合适的响应代码吗? 跟进 经过进一步的研究,我认为向DELETE添加参数可能会违反一些原则。 首先是该实现可能违反“统一接口”(请参见Roy论文的 5.1.5节)。 通过添加“ force_delete”,我们在已经定义良好的DELETE方法上添加了一个附加约束。此约束仅对我们有意义。 您也可能会争辩说它违反了“ 5.1.2客户端-服务器”,因为确认对话框确实是UI问题,并非所有客户端都希望确认删除。 建议有人吗?
135 http  rest 

12
休息集合中的分页
我有兴趣向JSON文档集合公开直接的REST接口(请考虑CouchDB或Persevere)。我遇到的问题是,GET如果集合很大,如何处理集合根目录上的操作。 举一个例子,我要展示StackOverflow的Questions表,其中每一行都以文档的形式显示(不一定有这样的表,只是“文档”的大量集合的具体示例)。收集将在可提供/db/questions与通常的CRUD API GET /db/questions/XXX,PUT /db/questions/XXX,POST /db/questions是在玩。获取整个集合的标准方法是,GET /db/questions但是,如果天真地将每一行都作为JSON对象转储,那么您将获得相当可观的下载量,并且在服务器方面需要进行大量工作。 解决方案当然是分页。Dojo通过在其JsonRestStore中使用Range与自定义范围单位一起使用标头的RFC2616兼容扩展,解决了此问题items。结果是206 Partial Content仅返回要求范围的。与查询参数相比,此方法的优势在于,它将查询字符串留给...查询(例如GET /db/questions/?score>200,诸如此类,是的,将被编码%3E)。 这种方法完全涵盖了我想要的行为。问题在于RFC 2616在206响应上指定了此内容(重点是我的): 该请求必须包含指示所需范围的Range标头字段(第14.35节),并且可能包含If-Range标头字段(第14.27节)以使请求成为条件请求。 这在标头的标准用法的上下文中是有道理的,但是这是一个问题,因为我希望206响应是默认值,以处理幼稚的客户/随机人员进行探索。 我已经详细研究了RFC,以寻找解决方案,但对我的解决方案不满意,并且对SO解决该问题很感兴趣。 我的想法: 200带Content-Range标题返回!-我不认为这是错误的,但是我希望有一个更明显的指示,即响应只是部分内容。 返回400 Range Required -所需的标头没有特殊的400响应代码,因此必须使用默认错误并手动读取。这也使得通过Web浏览器(或诸如Resty之类的其他客户端)进行探索变得更加困难。 使用查询参数 -一种标准方法,但是我希望允许进行la la Persevere查询,这切入了查询名称空间。 刚回来206!-我认为大多数客户不会害怕,但我不想违反RFC中的MUST 扩展规格!返回值266 Partial Content -行为与206完全相同,但响应于不得包含Range标头的请求。我认为266足够高,因此我不应该遇到碰撞问题,这对我来说很有意义,但是我不清楚这是否被视为禁忌。 我认为这是一个相当普遍的问题,我希望以某种事实上的方式完成此任务,因此我或其他人不会重新发明轮子。 当集合很大时,通过HTTP公开完整集合的最佳方法是什么?

6
如何使用PHP cURL发布JSON数据?
这是我的代码, $url = 'url_to_post'; $data = array( "first_name" => "First name", "last_name" => "last name", "email"=>"email@gmail.com", "addresses" => array ( "address1" => "some address", "city" => "city", "country" => "CA", "first_name" => "Mother", "last_name" => "Lastnameson", "phone" => "555-1212", "province" => "ON", "zip" => "123 ABC" ) ); $data_string = …
132 php  json  rest  curl 



14
通过REST中的RestTemplate进行POST请求
我没有找到解决问题的示例,因此想向您寻求帮助。我不能简单地使用JSON中的RestTemplate对象发送POST请求 每当我得到: org.springframework.web.client.HttpClientErrorException:415不支持的媒体类型 我以这种方式使用RestTemplate: ... restTemplate = new RestTemplate(); List<HttpMessageConverter<?>> list = new ArrayList<HttpMessageConverter<?>>(); list.add(new MappingJacksonHttpMessageConverter()); restTemplate.setMessageConverters(list); ... Payment payment= new Payment("Aa4bhs"); Payment res = restTemplate.postForObject("http://localhost:8080/aurest/rest/payment", payment, Payment.class); 我怎么了
126 java  json  spring  rest  resttemplate 

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.