Spring boot 弹簧罐';t接收邮递员发送的邮件参数

Spring boot 弹簧罐';t接收邮递员发送的邮件参数,spring-boot,http-post,postman,Spring Boot,Http Post,Postman,我的控制器就像 @RequestMapping(value = "/auth/company/delete", method = RequestMethod.POST, produces = {"application/json", "application/xml"}) @ResponseBody public ResponseMessage deleteCompany(@RequestParam("companyId") Integer companyId) { re

我的控制器就像

@RequestMapping(value = "/auth/company/delete", method = RequestMethod.POST,
        produces = {"application/json", "application/xml"})
@ResponseBody
public ResponseMessage deleteCompany(@RequestParam("companyId") Integer companyId) {
    return companyManageService.deleteCompany(companyId);
}
但当我在chrome控制台中使用

$.post( "http://ltc_dev.leapstack.cn/gw/security/auth/company/delete", { companyId: 1 })
  .done(function( data ) {
    alert( data.success);
    alert( data.message);
  });
我得到了正确的回答,所以。。。。。
我不确定这是否是邮递员的错误,或者我将控制器设置错误

在您的问题中,您的控制器方法尝试将公司ID作为请求参数。在“邮递员”中,您正在请求正文中发送companyId。正如我在评论中所说,您可以直接在url部分发送请求参数,如下所示:/auth/company/delete?companyId=2。springboot可以检测companyId请求参数,并将其直接分配给方法的companyId变量

如果您想在请求正文中发送companyId(您在评论中说过),您必须更改方法的签名,如下所示

@RequestMapping(value = "/auth/company/delete", method = RequestMethod.POST, produces = {"application/json", "application/xml"})
@ResponseBody
public ResponseMessage deleteCompany(@RequestBody Map<String, Integer> map) {
    return companyManageService.deleteCompany(map.get("companyId"));
}
若要使用请求正文,并希望直接将控制器方法变量中的整数值捕获为整数,则请求正文应如下所示:

{2}
@RequestMapping(value = "/auth/company/delete", method = RequestMethod.POST, produces = {"application/json", "application/xml"})
@ResponseBody
public ResponseMessage deleteCompany(@RequestBody Integer companyId) {
    return companyManageService.deleteCompany(companyId);
}
控制器方法应如下所示:

{2}
@RequestMapping(value = "/auth/company/delete", method = RequestMethod.POST, produces = {"application/json", "application/xml"})
@ResponseBody
public ResponseMessage deleteCompany(@RequestBody Integer companyId) {
    return companyManageService.deleteCompany(companyId);
}

在您的问题中,您的控制器方法尝试将公司ID作为请求参数。在“邮递员”中,您正在请求正文中发送companyId。正如我在评论中所说,您可以直接在url部分发送请求参数,如下所示:/auth/company/delete?companyId=2。springboot可以检测companyId请求参数,并将其直接分配给方法的companyId变量

如果您想在请求正文中发送companyId(您在评论中说过),您必须更改方法的签名,如下所示

@RequestMapping(value = "/auth/company/delete", method = RequestMethod.POST, produces = {"application/json", "application/xml"})
@ResponseBody
public ResponseMessage deleteCompany(@RequestBody Map<String, Integer> map) {
    return companyManageService.deleteCompany(map.get("companyId"));
}
若要使用请求正文,并希望直接将控制器方法变量中的整数值捕获为整数,则请求正文应如下所示:

{2}
@RequestMapping(value = "/auth/company/delete", method = RequestMethod.POST, produces = {"application/json", "application/xml"})
@ResponseBody
public ResponseMessage deleteCompany(@RequestBody Integer companyId) {
    return companyManageService.deleteCompany(companyId);
}
控制器方法应如下所示:

{2}
@RequestMapping(value = "/auth/company/delete", method = RequestMethod.POST, produces = {"application/json", "application/xml"})
@ResponseBody
public ResponseMessage deleteCompany(@RequestBody Integer companyId) {
    return companyManageService.deleteCompany(companyId);
}

您通过邮递员发送的不是requestParam。它是请求主体。如果要将其作为请求参数发送,则url应为/auth/company/delete?companyId=2@barbakini即使我将#RequestParam更改为#RequestBody,它仍然不起作用,我尝试将companyId从整数更改为带有#RequestBody的字符串,得到的值为“companyId”:如果是2,则改为2!您是否尝试使用**/auth/company/delete?companyId=2**?如果更改requestBody,您的方法应该得到一个Map对象,而不是字符串或整数。像deleteCompany(@RequestBody Map body)body.get(“candidateId”)一样,我想在post Request中使用integer接收json字符串。您应该阅读一些关于什么是json字符串以及如何将其转换为java类型的内容。您的问题中的json字符串是{“companyId”:2},如您所见,它不能直接转换为integer(因为它是非数字字符串值)。您可以将其包装到一个具有int companyId属性的类中,spring将自动将其输入到您的控制器方法中,或者像我上面所说的那样,可以将其转换为一个map,其中一个元素的键为companyId,值为2。我将为您发布答案。您通过postman发送的不是requestParam,而是requestBody。如果您想d作为请求参数,您的url应该是/auth/company/delete?companyId=2@barbakini即使我将#RequestParam更改为#RequestBody,它仍然不起作用,我尝试将companyId从整数更改为带有#RequestBody的字符串,得到的值为“companyId”“:2!您是否尝试使用**/auth/company/delete?companyId=2**?如果更改requestBody,您的方法应获取一个映射对象,而不是字符串或整数。例如deleteCompany(@requestBody Map body)body.get(“candidateId”)我想在post请求中使用integer接收json字符串。您应该阅读一些关于什么是json字符串以及如何将其转换为java类型的内容。您的问题中的json字符串是{“companyId”:2},正如您所看到的,它不能直接转换为integer(因为它是非数字字符串值)。您可以将它包装到一个具有int companyId属性的类中,spring将自动将其放入您的控制器方法中,或者像我上面所说的那样,它可以转换为一个映射,其中一个元素的键为companyId,值为2。我将为您发布一个答案。