例如,我有两种创建用户的方案:
问题在于,这是同一资源,一个用户。但是,取决于调用该api的人员(地点),预期的行为是不同的。
在一种情况下,DTO应该包含用户发布的密码,在另一种情况下,则不应包含用户发布的密码。
我该怎么办?
我不确定该怎么做。
谢谢
答案 0 :(得分:1)
这种情况的最佳策略是在请求的标头中传递一个属性。有了这些信息,您就可以使用属性创建2个端点来指导请求。
例如:
@PreAuthorize("hasRole('ROLE_USER')")
@PostMapping(headers = "X-YOUR-ORIGIN=user")
public ResponseEntity createUserByUser(){
...
}
@PreAuthorize("hasRole('ROLE_ADMIN')")
@PostMapping(headers = "X-YOUR-ORIGIN=admin")
public ResponseEntity createUserByAdmin(){
...
}
答案 1 :(得分:0)
我认为最好的方法是使用一个可选参数设定一个终点。像这样:
@PostMapping
public ResponseEntity createUser(@RequestParam(name = "userType") String userType){
//If it's admin, make sure the pwd is set in the dto. Else, it can be null
}