angular - Restful:同一资源的多个案例(相同的 api 端点?)
问题描述
例如,我有两个创建用户的场景:
- 由管理员创建,无密码。用户必须在激活页面上选择它。
- 由用户自己创建,带有密码。激活页面不会显示密码输入,因为密码已经存在。
问题是它是同一个资源,一个用户。但是根据调用 api 的人(在哪里),预期的行为会有所不同。
在一种情况下,DTO 应该包含用户发布的密码,在另一种情况下则不应该。
我该怎么办 ?
- 具有两个不同 DTO(带和不带密码)的两个 api 端点?但是我们不尊重约定创建一个给定资源的终点
- 相同的端点,但收到的 DTO 将包含判别式以知道我们是否要处理密码?如果不是,密码字段必须为空?
- 还有什么?
我不确定如何正确执行此操作。
谢谢
解决方案
这种情况的最佳策略是在请求的标头中传递一个属性。使用此信息,您可以使用该属性创建 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(){
...
}
推荐阅读
- c# - 在 DataTable 列中的值之前添加空格
- javascript - Openlayers 2 通过 Iphone 显示粉色地图(图层)
- c++ - 如何封装一个函数,使其只能被同一个类中的另一个函数调用?
- swift - SwiftUI 中 init() 中的条件
- c# - 随机数生成连续几次给出相同的数字
- sql - 将一个元素复制到多行的 XML 导入 SQL
- python - Python / Flask,在用户单击提交按钮并定向到成功页面后,我将如何在 3 秒后返回 index.html?
- android - 在 Xamarin Android 中使用 PNG 的动画小部件
- javascript - 如何在 react native 中使用 flex 在滚动视图内调整组件的大小?
- rust - 创建视图结构失败,因为“强制转换需要为`'static`借用变量”