Chr*_*ord 7 rest api-design asp.net-core-webapi
以下场景不遵循 RESTful 标准,并且很想知道如何最好地构建我的 API 来实现相同的目标。
对于针对资源的给定 GET 请求,例如GET /api/person/1
,如果原则包含声明,我想返回其他属性。
例如
GET /api/person/1 (Without IsAdmin claim)
{
name: "Buck Rogers",
dateOfBirth: 2000-01-01T00:00:00.000
}
Run Code Online (Sandbox Code Playgroud)
GET /api/person/1 (With IsAdmin claim)
{
name: "Buck Rogers",
dateOfBirth: 2000-01-01T00:00:00.000,
adminNote: "Something private"
}
Run Code Online (Sandbox Code Playgroud)
因此,我有条件地为同一资源请求返回两个不同的 DTO,这是不允许的。
我怎样才能以 RESTful 方式实现这一目标?
更新:
有人建议我可以定义该adminNote
属性并根据条件将其设置为 NULL。如果可能有多个条件来确定包含哪些属性,我将如何处理这种情况?例如
GET /api/person/1 (With IsModerator claim)
{
name: "Buck Rogers",
dateOfBirth: 2000-01-01T00:00:00.000,
moderatorNote: "Something else private"
}
Run Code Online (Sandbox Code Playgroud)
我希望避免添加仅在一种特定情况下不为空的额外属性。
小智 0
您可以使用所有三个字段创建一个 Person 资源,当 IsAdmin 为 false 或没有声明时,您可以将 adminNotes 设置为 null。并且不返回您可以使用的该属性@JsonInclude(Include.NON_NULL)
(对于 java,类似的东西可能在 asp 中可用) .net)也是如此。因此您不需要创建两个单独的实体或 DTO。
归档时间: |
|
查看次数: |
2606 次 |
最近记录: |