gpt4 book ai didi

c# - WebAPI2 中正确的 RESTful 实现是什么?

转载 作者:行者123 更新时间:2023-11-30 12:22:48 25 4
gpt4 key购买 nike

基本上我发现了关于这个主题的大量意见,但没有一个能让我相信什么是正确的。更具体地说,我有以下问题:

单数或复数或两者兼而有之

  • 是否有正确和错误的方法?

    标准和约定的存在是有原因的,我不相信我会满足于 - 这只是一个品味问题。没有任何指南或标准吗?没有权限完成 Fieldings 工作?

要返回什么 IHttpActionResults?它们应该包含什么?

  • 获取 - 返回 Ok();
  • 发布 - 返回 Created();
  • 放 - 返回(放?好吗?)
  • 删除 - 返回(删除?好吗?)

在 Created(location) 中返回什么?

假设Controller路由是'api/v1/model',应该是

我问这些问题是因为我经常遇到关于如何最好地实现 API 的冲突。

最佳答案

问:单数或复数或两者

切勿同时使用两者。使用任何一个。使用名词而不是动词。

不要使用动词:

/getAllCars
/createNewCar
/deleteAllRedCars

不要混淆单复数名词。保持简单,所有资源仅使用复数名词。

/cars instead of /car
/users instead of /user
/products instead of /product

现在,如果您看到下面的内容,它会更有意义:

GET /tickets - Retrieves a list of tickets
GET /tickets/12 - Retrieves a specific ticket
POST /tickets - Creates a new ticket
PUT /tickets/12 - Updates ticket #12
PATCH /tickets/12 - Partially updates ticket #12
DELETE /tickets/12 - Deletes ticket #12

如果一个资源与另一个资源相关,则使用子资源。

GET /cars/711/drivers/ Returns a list of drivers for car 711

问:在 Created(location) 中返回什么?

200 OK - 对成功的 GET、PUT、PATCH 或 DELETE 的响应。也可用于不会导致创建的 POST。

201 已创建 - 对导致创建的 POST 的响应。应与 Location header 结合使用指向新资源的位置

请澄清您的最后一个问题,我会相应地更新我的答案。

REST 没有明确的标准,每个人都根据自己的需要使用最佳实践。但是我建议你通过这个 PDF来自 apigee.com,其中列出了 REST API 的最佳实践以及每个大公司(例如 Facebook、twitter 等)使用的内容。

关于c# - WebAPI2 中正确的 RESTful 实现是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39244108/

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