RequestMapping:如何访问用于休息端点的 "method" 值
RequestMapping: How to access the "method" value used for a rest endpoint
我有一个 Spring 接受 GET 和 POST 请求的引导 REST 控制器端点:
@RequestMapping(
value="/users",
method= {RequestMethod.GET, RequestMethod.POST},
headers= {"content-type=application/json"}
)
public ResponseEntity<List<User>> getUsers() {
if(/*Method is GET*/) {
System.out.println("This is a GET request response.");
} else if( /*Method is POST*/) {
System.out.println("This is a POST request response.");
}
}
如果此端点被 GET 请求命中,我希望控制器在适当的 if 语句中执行某些操作。然而,如果端点被 POST 请求命中,我希望控制器采取另一种行动。
如何从休息控制器中提取此信息?我宁愿不必将此共享端点拆分为两种不同的方法。看起来很简单,我只是找不到任何关于它的文档。
只需添加两个不同名称的不同方法,一个用于 post,另一个用于 get。另外,请留下所需的请求方法。
获取
@RequestMapping(
value="/users",
method= RequestMethod.GET,
headers= {"content-type=application/json"}
)
public ResponseEntity<List<User>> getUsers() {
System.out.println("This is a GET request response.");
}
POST
@RequestMapping(
value="/users",
method= RequestMethod.POST,
headers= {"content-type=application/json"}
)
public ResponseEntity<List<User>> postUsers() {
System.out.println("This is a POST request response.");
}
这样您就不会增加额外的开销,而且代码看起来更干净。
正确的方法是映射两个单独的 GET 和 POST 方法,但如果您打算采用这种方法,则可以通过访问 HttpServletRequest 来获取请求的 HTTP 动词,如下所示:
@RequestMapping(
value="/users",
method= {RequestMethod.GET, RequestMethod.POST},
headers= {"content-type=application/json"}
)
public ResponseEntity<List<User>> getUsers(final HttpServletRequest request) {
if(request.getMethod().equals("GET")) {
System.out.println("This is a GET request response.");
} else if(request.getMethod().equals("POST")) {
System.out.println("This is a POST request response.");
}
}
您无需更改调用代码,因为 HttpServletRequest 会自动通过
我有一个 Spring 接受 GET 和 POST 请求的引导 REST 控制器端点:
@RequestMapping(
value="/users",
method= {RequestMethod.GET, RequestMethod.POST},
headers= {"content-type=application/json"}
)
public ResponseEntity<List<User>> getUsers() {
if(/*Method is GET*/) {
System.out.println("This is a GET request response.");
} else if( /*Method is POST*/) {
System.out.println("This is a POST request response.");
}
}
如果此端点被 GET 请求命中,我希望控制器在适当的 if 语句中执行某些操作。然而,如果端点被 POST 请求命中,我希望控制器采取另一种行动。
如何从休息控制器中提取此信息?我宁愿不必将此共享端点拆分为两种不同的方法。看起来很简单,我只是找不到任何关于它的文档。
只需添加两个不同名称的不同方法,一个用于 post,另一个用于 get。另外,请留下所需的请求方法。
获取
@RequestMapping(
value="/users",
method= RequestMethod.GET,
headers= {"content-type=application/json"}
)
public ResponseEntity<List<User>> getUsers() {
System.out.println("This is a GET request response.");
}
POST
@RequestMapping(
value="/users",
method= RequestMethod.POST,
headers= {"content-type=application/json"}
)
public ResponseEntity<List<User>> postUsers() {
System.out.println("This is a POST request response.");
}
这样您就不会增加额外的开销,而且代码看起来更干净。
正确的方法是映射两个单独的 GET 和 POST 方法,但如果您打算采用这种方法,则可以通过访问 HttpServletRequest 来获取请求的 HTTP 动词,如下所示:
@RequestMapping(
value="/users",
method= {RequestMethod.GET, RequestMethod.POST},
headers= {"content-type=application/json"}
)
public ResponseEntity<List<User>> getUsers(final HttpServletRequest request) {
if(request.getMethod().equals("GET")) {
System.out.println("This is a GET request response.");
} else if(request.getMethod().equals("POST")) {
System.out.println("This is a POST request response.");
}
}
您无需更改调用代码,因为 HttpServletRequest 会自动通过