gpt4 book ai didi

rest - 在正文或 URI 中指定 REST API PUT 请求的 DTO ID?

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

对于 REST 和 ASP.NET Web API,即使 DTO 负载(例如 JSON)本身指定了标识符,是否也需要将标识符添加到 PUT 操作方法的路由中?

例如:

public void Put(int id, [FromBody]SomeDto someDto) // someDto has an 'Id' property

ASP.NET Web API 模板包括 id参数,我见过很多这样的例子。

相比之下,可以省略 id吗?参数并仍然遵守 REST 准则?例如:

public void Put([FromBody]SomeDto someDto)

最佳答案

考虑默认的 ASP.NET Web API 路由模板:

api/{controller}/{id}

...以及匹配该模板的路由:
api/persons/42

然后,您的第一个方法签名:

public void Put(int id, [FromBody]SomeDto someDto)

...将确保您的 DTO 标识符(例如, 42 )出现在 PUT 请求的 URI 中,这被认为是良好的做法,如 here 所述和 here .

在您的 Put 内action 方法,然后您可以考虑检查 DTO 中指定的标识符是否与路由中指定的标识符匹配。如果它们不同,则返回 HTTP 状态代码 400 Bad Request :

if (someDto.Id != id)
{
return BadRequest("The DTO identifier does not match the identifier in the route.");
}

关于rest - 在正文或 URI 中指定 REST API PUT 请求的 DTO ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40616403/

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