Questions tagged «rest»

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

11
Powershell v3 Invoke-WebRequest HTTPS错误
使用Powershell v3的Invoke-WebRequest和Invoke-RestMethod,我成功地使用POST方法将json文件发布到https网站。 我正在使用的命令是 $cert=New-Object System.Security.Cryptography.X509Certificates.X509Certificate2("cert.crt") Invoke-WebRequest -Uri https://IPADDRESS/resource -Credential $cred -certificate $cert -Body $json -ContentType application/json -Method POST 但是,当我尝试使用GET方法时: Invoke-WebRequest -Uri https://IPADDRESS/resource -Credential $cred -certificate $cert -Method GET 返回以下错误 Invoke-RestMethod : The underlying connection was closed: An unexpected error occurred on a send. At line:8 char:11 + $output = Invoke-RestMethod …
126 .net  rest  powershell  https 

7
使用POST创建请求,其响应代码为200或201以及内容
假设我编写了一个REST服务,其目的是向系统添加新的数据项。 我打算发布到 http://myhost/serviceX/someResources 假设可行,我应该使用什么响应代码?我可能会返回什么内容。 我正在查看HTTP响应代码的定义,并看到了以下可能性: 200:返回描述或包含动作结果的实体; 201:表示已创建 含义*该请求已得到满足,并导致创建了新资源。可以通过响应实体中返回的URI引用新创建的资源,其中最具体的URI由Location头字段给出。响应应包括一个实体,其中包含资源特征和位置的列表,用户或用户代理可以从中选择最合适的一个。实体格式由Content-Type标头字段中提供的媒体类型指定。* 后者听起来更符合Http规范,但我不清楚 响应应包含一个实体,其中包含资源特征和位置的列表 手段。 建议?解释?

8
Spring RestTemplate超时
我想为我的Web应用程序使用的rest服务设置连接超时。我正在使用Spring的RestTemplate与我的服务交谈。我进行了一些研究,发现并使用了下面的xml(在我的应用程序xml中),我认为这是为了设置超时。我正在使用Spring 3.0。 我在这里也看到了同样的问题,使用RestTemplate为Spring Web服务设置超时,但是解决方案看起来并不干净,我更愿意通过Spring config设置超时值 <bean id="RestOperations" class="org.springframework.web.client.RestTemplate"> <constructor-arg> <bean class="org.springframework.http.client.CommonsClientHttpRequestFactory"> <property name="readTimeout" value="${restURL.connectionTimeout}" /> </bean> </constructor-arg> </bean> 看来无论我将readTimeout设置为什么,都会得到以下信息: 网络电缆已断开连接: 等待约20秒,并报告以下异常: org.springframework.web.client.ResourceAccessException:I / O错误:主机没有路由:连接;嵌套的异常是java.net.NoRouteToHostException:没有路由到主机:connect 网址不正确,因此REST服务返回404: 等待大约10秒,并报告以下异常: org.springframework.web.client.HttpClientErrorException:找不到404 我的要求需要更短的超时,因此我需要能够更改这些超时。关于我在做什么错的任何想法吗? 非常感谢。


4
自定义HTTP授权标头
我想知道是否可以将自定义数据放在HTTP授权标头中。我们正在设计RESTful API,可能需要一种方法来指定自定义授权方法。例如,我们称之为FIRE-TOKEN身份验证。 这样的东西是否有效,并根据规范允许: Authorization: FIRE-TOKEN 0PN5J17HBGZHT7JJ3X82:frJIUN8DYpKDtOLCwo//yllqDzg= 第二个字符串的第一部分(在“:”之前)是API密钥,第二部分是查询字符串的哈希。

7
使用json参数卷曲GET请求
我试图通过cURL从命令提示符向远程REST API发送“ GET”请求,如下所示: curl -X GET -H "Content-type: application/json" -H "Accept: application/json" "http://server:5050/a/c/getName/{"param0":"pradeep"}" 但它不返回任何输出。我试图直接从浏览器ping URL,我能够成功获得响应,但我不知道该命令出了什么问题。 基本上,我想对远程REST服务设置一个“ GET”请求,该请求通过curl响应给我json数据。谁能指导我我在做什么错?我尝试了各种帖子,但是所有人都在谈论POST请求而不是GET。
124 json  rest  curl 

10
Spring Resttemplate异常处理
下面是代码片段;基本上,当错误代码不是200时,我正在尝试传播异常。 ResponseEntity<Object> response = restTemplate.exchange(url.toString().replace("{version}", version), HttpMethod.POST, entity, Object.class); if(response.getStatusCode().value()!= 200){ logger.debug("Encountered Error while Calling API"); throw new ApplicationException(); } 但是,如果来自服务器的响应为500,则会出现异常 org.springframework.web.client.HttpServerErrorException: 500 Internal Server Error at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:94) ~[spring-web-4.2.3.RELEASE.jar:4.2.3.RELEASE] 我真的需要在尝试中包装其余模板交换方法吗?那么代码的目的是什么?

8
为什么我们需要RESTful Web服务?
我将学习RESTful Web服务(最好说一下,因为它是CS硕士学位课程的一部分,所以我必须这样做。) 我已经阅读了Wikipedia上的一些信息,并且还阅读了Sun Developer Network上有关REST的文章,我发现这不是一件容易的技术,有一些用于构建RESTful应用程序的特殊框架,并且经常将其与SOAP Web服务和程序员应该了解何时使用SOAP,何时使用REST是不错的方法。 我记得几年前,SOAP非常流行(流行吗?),并且每个好的CV中都必须包含“ SOAP”项。但是实际上,它很少被使用并用于实现非常简单的目的。 在我看来,REST是另一个“时尚的最后一句话”(否则我可能是完全错误的,因为我从未在实践中见过REST)。 您能否举几个例子说明应该使用REST的原因,为什么没有REST我们不能做同样的事情(或者为什么没有REST我们应该花更多的时间做同样的事情)? UPD:很遗憾,我看不到任何具体的论点会在第一批评论中引起我的注意。让我认为REST是一项了不起的技术! 我想看到这样的答案: 我正在开发另一个复杂的HelloWorld应用程序,我们需要传输大量/微小的数据,因此我向同事提出了REST解决方案: - 哦,该死的!Jonny,我们当然应该使用REST来实现此应用!–是的,比利,我们可以使用REST,但最好使用SOAP。相信我,因为我对开发HelloWorld应用程序有所了解。–但是SOAP是上世纪的老式技术,我们可以使用更好的技术。– Billy,您准备好花3天的时间试用REST吗?我们可以在2个小时内使用SOAP来完成此操作。– 是的,我敢肯定,我们将花费更多的时间来实现相同的安全性/性能/可扩展性/其他任何与SOAP相同的功能。我敢肯定,从现在开始,HelloWorld应用程序应仅使用REST开发。

1
如何在RESTful POST方法中访问参数
我的POST方法看起来像这样: @POST @Consumes({"application/json"}) @Path("create/") public void create(String param1, String param2){ System.out.println("param1 = " + param1); System.out.println("param2 = " + param2); } 当我在Netbeans中创建Jersey客户时,调用post方法的方法如下所示: public void create(Object requestEntity){ webResource.path("create").type(MediaType.APPLICATION_JSON).post(requestEntity); } 运行此测试时: @Test public void hello(){ String json = "{param1=\"hello\",param2=\"hello2\"}"; this.client.create(json); } 它在服务器中提供以下输出: INFO: param1 = {param1="hello",param2="hello2"} INFO: param2 = 我需要更改什么才能使参数给出正确的值?

3
REST API基于令牌的身份验证
我正在开发需要身份验证的REST API。因为身份验证本身是通过HTTP上的外部Web服务进行的,所以我认为我们将分配令牌以避免重复调用身份验证服务。巧妙地使我想到了第一个问题: 这真的比仅要求客户端在每个请求上使用HTTP Basic Auth并在身份验证服务服务器端缓存调用更好吗? Basic Auth解决方案的优点是,在可以开始对内容的请求之前,不需要完全往返服务器。令牌的范围可能会更灵活(即仅授予特定资源或操作的权限),但这似乎比我更简单的用例更适合OAuth上下文。 目前,令牌的获取方式如下: curl -X POST localhost/token --data "api_key=81169d80... &verifier=2f5ae51a... &timestamp=1234567 &user=foo &pass=bar" 的api_key,timestamp并且verifier被所有请求所需。“验证程序”由以下方式返回: sha1(timestamp + api_key + shared_secret) 我的意图是仅允许来自已知方的呼叫,并防止逐字重复使用呼叫。 这样够好吗?杀人 过度杀伤力? 有了令牌,客户可以获取资源: curl localhost/posts?api_key=81169d80... &verifier=81169d80... &token=9fUyas64... &timestamp=1234567 对于最简单的呼叫,这似乎太冗长了。考虑到shared_secret将遗留在(至少)iOS应用程序中的意愿(我认为可以从中提取它),这是否提供了错误的安全感之外的任何东西?

4
使用http DELETE删除资源
因此,鉴于Http中的DELETE动词是幂等的,因此当我发出以下请求时,第二个(或第三个或第四个,等等)会发生什么? DELETE /person/123 第一次,资源被删除,并且我返回204(成功,没有内容)。我应该在后续调用中返回204还是返回404(未找到)?
122 rest  http  http-delete 

7
RESTful在一个请求中创建多个项目的方式
我正在开发一个小型客户端服务器程序来收集订单。我想以“ REST(有效)方式”执行此操作。 我想做的是: 收集所有订单行(产品和数量)并将完整的订单发送到服务器 目前,我看到执行此操作的两个选项: 将每个订单行发送到服务器:POST数量和product_id 我实际上不想这样做,因为我想限制对服务器的请求数,因此选项2: 收集所有订单行并将它们立即发送到服务器。 我应该如何实施选项2?我有两个想法:将所有订单行包装在JSON对象中,然后将其发送到服务器或使用数组发布订单行。 实施选项2是个好主意还是好的做法,如果是的话,我应该怎么做。 什么是好习惯?
122 rest  post 

6
RESTful设计/ login或/ register资源?
我当时在设计一个Web应用程序,然后停下来思考如何将我的api设计为RESTful Web服务。目前,我的大多数URI都是通用的,可能适用于各种Web应用程序: GET /logout // destroys session and redirects to / GET /login // gets the webpage that has the login form POST /login // authenticates credentials against database and either redirects home with a new session or redirects back to /login GET /register // gets the webpage that has …

4
如何在Spring Boot中检索查询参数?
我正在使用Spring Boot开发一个项目。我有一个控制器,它接受GET请求。 目前,我正在接受对以下类型URL的请求: http:// localhost:8888 / user / data / 002 但我想接受使用查询参数的请求: http:// localhost:8888 / user?data = 002 这是我的控制器的代码: @RequestMapping(value="/data/{itemid}", method = RequestMethod.GET) public @ResponseBody item getitem(@PathVariable("itemid") String itemid) { item i = itemDao.findOne(itemid); String itemname = i.getItemname(); String price = i.getPrice(); return i; }
121 java  rest  spring-boot 

9
如何使用Spring管理REST API版本管理?
我一直在搜索如何使用Spring 3.2.x管理REST API版本,但没有找到易于维护的任何东西。我将首先解释我所遇到的问题,然后是一个解决方案...但是我确实想知道我是否在这里重新发明轮子。 我想基于Accept标头来管理版本,例如,如果请求具有Accept标头application/vnd.company.app-1.1+json,我希望spring MVC将其转发到处理该版本的方法。而且由于并非同一版本中的API中的所有方法都发生了变化,所以我不想转到每个控制器并为在版本之间未发生变化的处理程序进行任何更改。我也不想逻辑确定在控制器本身中使用哪个版本(使用服务定位器),因为Spring已经发现了要调用的方法。 因此,采用1.0版至1.8版的API,其中在1.0版中引入了处理程序,并在v1.7版中对其进行了修改,我想通过以下方式进行处理。假设代码在控制器内部,并且有一些代码能够从标头中提取版本。(以下在Spring中无效) @RequestMapping(...) @VersionRange(1.0,1.6) @ResponseBody public Object method1() { // so something return object; } @RequestMapping(...) //same Request mapping annotation @VersionRange(1.7) @ResponseBody public Object method2() { // so something return object; } 在Spring中这是不可能的,因为这两种方法具有相同的RequestMapping注释,并且Spring无法加载。这个想法是VersionRange注释可以定义一个打开或关闭的版本范围。第一种方法从1.0到1.6版本有效,而第二种方法从1.7版开始(包括最新版本1.8)有效。我知道,如果有人决定通过99.99版,这种方法就会失败,但是我可以接受。 现在,由于没有认真修改spring的工作原理就不可能实现上述目的,因此我想到了修改处理程序与请求匹配的方式,特别是编写自己的ProducesRequestCondition,并在其中拥有版本范围。例如 码: @RequestMapping(..., produces = "application/vnd.company.app-[1.0-1.6]+json) @ResponseBody public Object method1() { // so …

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.