Web services 我怎样才能让它与get一起工作,或者应该是一个在春季提供REST服务的POST

Web services 我怎样才能让它与get一起工作,或者应该是一个在春季提供REST服务的POST,web-services,spring,spring-mvc,resttemplate,Web Services,Spring,Spring Mvc,Resttemplate,我正在处理一些web服务器,我必须将一些数据发送到web服务并获取状态代码。。我想也许这应该是一个帖子,而不是一个GET,但我想从互联网上听到所有的专业人士 这是我使用SpringRESTTemplate的客户机代码 vars.put("lastName", "JOHN"); vars.put("firstName", "SMITH"); vars.put("middleInitial", ""); vars.put("socialSecurityNumber", "111-11-1111");

我正在处理一些web服务器,我必须将一些数据发送到web服务并获取状态代码。。我想也许这应该是一个帖子,而不是一个GET,但我想从互联网上听到所有的专业人士

这是我使用SpringRESTTemplate的客户机代码

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);
下面是我的服务端代码(SpringMVC RESTful服务)。我认为我在客户机中输入的所有字段都会在ModelMap对象中,但不是它的

@RequestMapping(value = "/checkstatus", method = RequestMethod.get)
@ResponseBody
public ResponseEntity<String> getCheckEnrollStatus(ModelMap model) throws ResourceNotFoundException
{
        logger.debug("Looking for  Status: " + model.toString());
}
@RequestMapping(value=“/checkstatus”,method=RequestMethod.get)
@应答器
公共响应getCheckEnrollStatus(ModelMap模型)引发ResourceNotFoundException
{
debug(“查找状态:+model.toString());
}
所以我有两个问题:

1) 由于向服务器发送了大量数据,我是否应该更改GET to a POST

2) 如果我把它作为一个get,为什么我的ModelMap雇员是


请帮我解决这个问题,因为它并没有改变服务器上的任何东西,只是在这里返回数据

像这样使用请求参数

@RequestMapping(value = "/checkstatus", method = RequestMethod.get)
@ResponseBody
public ResponseEntity<String> getCheckEnrollStatus(@RequestParam final Long id) 
@RequestMapping(value=“/checkstatus”,method=RequestMethod.get)
@应答器
公共响应性getCheckEnrollStatus(@RequestParam最终长id)
或者uri参数,比如

@RequestMapping(value = "/checkstatus/{id}", method = RequestMethod.get)
@ResponseBody
public ResponseEntity<String> getCheckEnrollStatus(@PathVariable final Long id) throws ResourceNotFoundException
{
@RequestMapping(value=“/checkstatus/{id}”,method=RequestMethod.get)
@应答器
public ResponseEntity getCheckEnrollStatus(@PathVariable final Long id)引发ResourceNotFoundException
{

要填充您的
模型图
,您可能需要使用
@RequestBody
对其进行注释

正如评论所指出的,按照规范,您不能有一个带有GET的请求主体,因此您需要将参数作为URL的一部分,并使用GET或convert to POST


虽然POST似乎不符合您通话的目的。

通常我会说这应该是一个GET,但我注意到您的参数之一是
socialSecurityNumber
。您肯定不希望它成为URL的一部分。请检查

使用HTTP协议的服务的作者不应使用基于GET的表单提交敏感数据,因为这将导致此数据在请求URI中编码。许多现有服务器、代理和用户代理将在第三方可能可见的位置记录请求URI。服务器可使用基于POST的表单我宁愿投降


发布。

HTTP GET中不应该有RequestBody。@user2428795您不应该按照我的答案和规范中的解释将其更改为POST。@user2428795如果您要使用POST,我建议使用POJO来表示映射的内容,这样您就有了一个类型良好的对象来进行marshall处理。这将使代码更清晰。@user2428795 d不要为此使用post,这违反了restful约定,http spec.7请求/uri参数并不复杂或困难。但我必须在7个字段中传递,但我必须传递所有7个字段,因此您需要7个uri参数,或7个@requestparams。我认为社会安全号码是唯一的?@user2428795如果您可以使用唯一值,而不是n正如Nim所建议的那样,所有参数都会更加RESTful。您描述的服务从一开始就应该通过HTTPS。