2013-06-19 29 views
2

我一些Web服务器上的工作与REST服务POST,我有一些数据发送到Web服务,并找回状态代码..我我想也许这应该是一个POST而不是一个GET,但我想听到所有的互联网专业人士。我怎样才能得到这个用GET工作还是应该在春天

下面是使用Spring RESTTemplate

vars.put("lastName", "JOHN"); 
vars.put("firstName", "SMITH"); 
vars.put("middleInitial", ""); 
vars.put("socialSecurityNumber", "111-11-1111"); 
vars.put("Type","A"); 
vars.put("FileNumber",""); 
vars.put("EISNumber",""); 


String jsonreturn = restTemplate.getForObject("http://" + mRESTServer.getHost() + ":8080/services/api/checkstatus", String.class, vars); 

现在,这里是我的服务端代码(Spring MVC的RESTful服务)我的客户端代码。我想我在客户端输入的所有领域将在ModelMap对象,但它不是

@RequestMapping(value = "/checkstatus", method = RequestMethod.get) 
@ResponseBody 
public ResponseEntity<String> getCheckEnrollStatus(ModelMap model) throws ResourceNotFoundException 
{ 
     logger.debug("Looking for Status: " + model.toString()); 
} 

所以我有两个问题:

1)我应该改变得到一个POST由于提呈很多数据到服务器?

2)如果我把它作为一个明白为什么是我ModelMap emply?

请帮我

+0

http://stackoverflow.com/q/978061/106261 – NimChimpsky

回答

0

GET,因为它并没有改变任何东西onserver只是将数据返回这里是the spec

使用请求参数这样

@RequestMapping(value = "/checkstatus", method = RequestMethod.get) 
@ResponseBody 
public ResponseEntity<String> getCheckEnrollStatus(@RequestParam final Long id) 

或URI参数,如

@RequestMapping(value = "/checkstatus/{id}", method = RequestMethod.get) 
@ResponseBody 
public ResponseEntity<String> getCheckEnrollStatus(@PathVariable final Long id) throws ResourceNotFoundException 
{ 
+0

,但我必须要通过所有7场 – user2428795

+0

那么你就需要7个URI参数,或7个@requestparams。我认为社会保障号码是独一无二的? – NimChimpsky

+0

@ user2428795如果你可以使用一个唯一的值而不是所有的参数,这将会像Nim所说的那样更加RESTful。无论哪种方式,您描述的服务应该从一开始就通过HTTPS。 – Jim

1

为了您ModelMap要填充你可能需要使用@RequestBody进行注解。

正如评论所指出的那样,你不能有一个请求,机身采用了GET按照规范。因此,您需要将参数设置为URL的一部分,然后使用get或convert转换为POST。

虽然POST似乎不是你打电话的目的适应。

+2

HTTP GET中不应该有RequestBody。 – Zaki

+0

@崎崎感谢您的理智检查/提醒 - 更新。 – Jim

+0

我正在将它更改为POST,但仍然无法使其工作 – user2428795

1

通常我会说这应该是一个GET,但我注意到你有socialSecurityNumber为您的参数之一。你绝对不希望它成为你网址的一部分。看看它使用HTTP协议不应该使用GET,提交敏感数据的基于形式的服务RFC 2616 section 15.1.3

作者,因为这将导致该数据在Request-URI进行编码。许多现有的服务器,代理和用户代理都会将请求URI记录在第三方可能看到的某个地方。服务器可以使用基于POST的表单提交,而不是

做一个POST。

相关问题