我可以使用与不同请求体相同的请求映射创建多个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.
}
这可能吗。?我们如何在春季靴子中处理这个问题。
你必须选择这个。
是的,您可以将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?
注意:我知道好的REST API设计要求如果我想删除记录,我应该使用DELETE方法,但是此示例仅作为参考创建,以显示如何使用相同的URI /方法来处理2个不同的端点。