我想知道是否根据每个方法RestEndPoint
调用被映射到控制器中两个不同方法的相同PRODUCES
。
以下描述了我的要求?
@Controller
ContollerClass {
@GetMapping(value = "/v1/v2/{userID}", produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<byte[]> getUser( {
// Rest of code
}
@GetMapping(value = "/v1/v2/{userID}", produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
public ResponseEntity<byte[]> getBinUser( {
// Rest of code
}
}
如图所示,它有两种不同的GET
请求方法和完全相同的Rest end point
。唯一的区别是它们返回的return type
。
现在,当任何http客户端调用此其余端点(可以是browser
,curl
,postman
等)时,如何区分将实际调用哪个端点?与produces
有什么关系吗?如果是这样,客户端必须调用什么?是否需要提供accept
HTTP标头?
答案 0 :(得分:0)
您可以根据某些参数区分它们,例如您可以尝试类似
@GetMapping(value = "/v1/v2/{userID}", produces = MediaType.APPLICATION_JSON_VALUE, params = "paramForGetUser")
public ResponseEntity<byte[]> getUser(@RequestParam String paramForGetUser){
// Rest of code
}
@GetMapping(value = "/v1/v2/{userID}", produces = MediaType.APPLICATION_OCTET_STREAM_VALUE, params = "paramForGetBinUser")
public ResponseEntity<byte[]> getBinUser(@RequestParam String paramForGetBinUser){
// Rest of code
}