spring - 可以通过@RequestBody 以外的方式spring map POST 参数

标签 spring spring-mvc spring-restcontroller

我正在使用 @RestController s 的应用程序,其中所有请求都是 POST请求...正如我从 this post 了解到的,您不能将单独的 post 参数映射到单独的方法参数,而是需要将所有参数包装在一个对象中,然后将此对象用作用 @RequestBody 注释的方法参数。因此

@RequestMapping(value="/requestotp",method = RequestMethod.POST) 
    public String requestOTP( @RequestParam(value="idNumber") String idNumber , @RequestParam(value="applicationId") String applicationId) {
        return customerService.requestOTP(idNumber, applicationId);

不适用于 POST正文请求 {"idNumber":"345","applicationId":"64536"}
我的问题是我有 很多 POST requests ,每个只有一个或两个参数,创建所有这些对象只是为了接收内部的请求会很乏味......那么有没有其他类似于处理获取请求参数(URL参数)的方式的方法?

最佳答案

是的,有两种方法-

首先 - 您需要做的就是将这些参数附加到 url 中,无需在正文中提供它们。
url 将类似于 - baseurl+/requestotp?idNumber=123&applicationId=123

@RequestMapping(value="/requestotp",method = RequestMethod.POST) 
    public String requestOTP( @RequestParam(value="idNumber") String idNumber , @RequestParam(value="applicationId") String applicationId) {
        return customerService.requestOTP(idNumber, applicationId);

第二-您可以按如下方式使用 map
 @RequestMapping(value="/requestotp",method = RequestMethod.POST) 
    public String requestOTP( @RequestBody Map<String,Object> body) {
        return customerService.requestOTP(body.get("idNumber").toString(), body.get("applicationId").toString());

关于spring - 可以通过@RequestBody 以外的方式spring map POST 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49670209/

相关文章:

java - Spring AOP 阻止 RestController

java - 是否可以在自定义 PreAuthorize 方法中获取 RequestMethod-verb?

java - Spring Batch和Spring Integration的集成问题-“未为端点定义轮询器”异常

java - Quartz 和 Spring 的 NullPointerException

java - 如何一次获取 500 行,直到获取表中的所有项目?

java - 嵌套异常是 java.io.FileNotFoundException : AbstractCouchbaseDataConfiguration. 类无法打开,因为它不存在

java - Spring Oauth2 : Authentication Object was not found in the SecurityContext

spring-restcontroller - Spring restController : how to error when unknown @RequestParam is in url

spring-mvc - 带有tomcat 8和spring mvc的Quartz调度程序创建多个线程并且在tomcat停止时无法停止

java - Spring Boot 如何忽略 HttpStatus 异常