我可以使用与不同请求体相同的请求映射创建多个HTTP POST方法

问题描述 投票:1回答:2

我可以使用与不同请求体相同的请求映射创建多个HTTP POST方法

@RequestMapping("api/v1/")
@RequestMapping(value = "test" ,method = RequestMethod.POST)
public RObjet create(@RequestBody RBody rbody)
{  
 // do some process...  
} 

@RequestMapping("api/v1/")
@RequestMapping(value = "test" ,method = RequestMethod.POST)
public RObjet2 create2(@RequestBody RBody2 rbody)
{  

  // do something.  

} 

这可能吗。?我们如何在春季靴子中处理这个问题。

java spring-boot http-post
2个回答
-1
投票

你必须选择这个。

  • 消费领域是可能的。您可以使用不同的消费类型。 如果你有url,你可以使用params字段。 @RequestMapping(value =“/ path”,params =“id”)public String test1(@RequestBody RBody body){} @RequestMapping(value =“/ path”,params =“name”)public String test2(@RequestBody RBody body){}

0
投票

是的,您可以将POST Http Method用于具有不同请求主体的相同端点URI,并且您也可以获得不同的响应。实现此目的的一种方法是使用端点URI +标头映射请求

EG

@RestController
@RequestMapping("/api/bills")
public class BillingController {

    @RequestMapping(method = RequestMethod.POST, headers = "action=add-bill")
    public BillId addBill(@Valid @RequestBody BillingData data) {
        //Some code
    }

    @RequestMapping(method = RequestMethod.POST, headers = "action=delete-bill-by-id")
    @ResponseStatus(code = HttpStatus.NO_CONTENT)
    public void removeBill(@Valid @RequestBody BillId identifier) {
        //Some code here to remove bill
    }

}

在这种情况下,BillingController中的两个类方法都映射到相同的HTTP方法(POST)和URI(/ api / bills)。一旦你将你的帖子请求指向/ api / bills,头部动作将驱动BillingController中的类方法被调用

如何点击BillingController.addBill?

BillingController.addBill

注意:我知道好的REST API设计要求如果我想删除记录,我应该使用DELETE方法,但是此示例仅作为参考创建,以显示如何使用相同的URI /方法来处理2个不同的端点。

© www.soinside.com 2019 - 2024. All rights reserved.