gpt4 book ai didi

rest - RESTful 端点的输入 DTO 是否应该与输出 DTO 匹配?

转载 作者:行者123 更新时间:2023-12-04 04:34:33 26 4
gpt4 key购买 nike

我正在研究 RESTful API,但在为 API 提供输入的过程中遇到了一些麻烦。

假设我有一个可以像这样获取的“人”资源:api/person/{id}并返回一个这样的对象:

public class Person
{
public int Id { get; set; }
public string Surname { get; set; }
public string GivenName { get; set; }
public DateTime DateOfBirth { get; set; }
}

如果我想更新那个人,API 是否应该期待一个完整的 Person例如,或者使用单独的 DTO 是否可以接受?

比方说 DateOfBirth不能改变,接受它作为输入是否被认为是 RESTful:
public class UpdatePersonDto
{
public string Surname { get; set; }
public string GivenName { get; set; }
}

这意味着我会有这个端点 api/person/{id}返回 Person使用时 GET , 同时接受作为输入 UpdatePersonDto使用时 PUT .这对我来说听起来不对,但我不确定我是否只是偏执。

所以我想我的问题总结如下: 在给定的资源端点上接受与该端点返回的数据结构不同的数据结构是否合适?

最佳答案

REST 的共识似乎是在使用 PUT 更新时,提供整个实体来替换。

以编程方式,它可以让 PUT/person/{id} 接受在幕后映射到 UpdatePersonDTO 而不是 Person 的输入。

唯一的“问题”可能是它确实违背了普遍预期。

一个中间解决方案可以是 POST(或 PUT)/person/{id}/mutables,它可以接受 UpdatePersonDTO。

编辑:或者更明显的是: PUT/person/{id}/name 它采用包含两个字段的 PersonName 参数。

关于rest - RESTful 端点的输入 DTO 是否应该与输出 DTO 匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31800204/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com