Restful :同一资源的多个案例(相同的 api 终点?)

Restful : multiple cases for a same ressource (same api end point ?)

例如,我有两种创建用户的场景:

问题是它是同一个资源,一个用户。但是根据调用 api 的人(地点),预期的行为会有所不同。

在一种情况下,DTO 应该包含用户发布的密码,在另一种情况下,它不应该。

我该怎么办?

我不知道该怎么做才对。

谢谢

针对这种情况的最佳策略是在请求的 header 中传递一个属性。有了这些信息,您可以创建 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(){
   ...
}

我认为最好的方法是用一个可选参数做一个终点。类似于:

@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 }