gpt4 book ai didi

rest - 网络 API/REST : Request list of items

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

我想这可能是一个简单的问题,但我看到了相互矛盾的答案。

我正在构建一个返回类对象的 restful web api 服务。除了能够像这样请求所有项目、一个项目或类别之外:

http://MyService/Albums

http://MyService/Albums/12345

http://MyService/Category/Blues

我还希望能够让用户能够选择多个,例如:

http://MyService/Albums/12345,77777,87654

http://MyService/Category/Blues,Pop,Metal

我不需要上面显示的语法,那只是一个例子。

我已经通过创建如下代码实现了这一点:

[Route("Albums/Category/{categoryList}")]
public List<Album> GetAlbumsByCategory(string categoryList)
{
int[] cats = categoryList.Split(',');
return(AlbumManager.GetAlbums(cats));
}

这工作正常,但用户需要知道输入可以是单个值,也可以是逗号值列表。然后在我的 AlbumManager 中遍历专辑集合并仅将选定的项目添加到新列表中。

我想知道:

(A) REST 中是否已经存在快捷方式以及执行此操作的首选方法?我看过 Category=Blues&Category=Pop& 的一些建议 ..... 对我来说似乎很冗长,但如果有标准的话我想使用它。

(B) 当我使用我的方法时,我不断地在各处编写拆分代码。 REST 中是否有简化此操作的快捷方式?我看过一些 [FromUri] 引用资料,但我不清楚。

最佳答案

一个)。在精确推荐的方法上休息有点放松,基本上你有 3 个选项。没有一个比另一个更“RESTful”,选择最适合您的 API 用户的那个 - 这可能与适合您自己的不同,毕竟 API 用户也是用户:-)。

1).实现一个自定义 ActionFilter,这将使您免于拆分代码,请参阅有关此问题的多个答案 https://stackoverflow.com/a/19107738/1422377

2).听起来“违反原则”,发送一个 POST 请求,该请求接受正文中的列表。是的,最纯粹的人可能会争辩说,除非您正在修改数据,否则这不应该构成帖子,但要记住用户。

3).稍微修改您当前的方法,使 API 用户更清楚他们期望输入的内容。例如:

public List<Album> GetAlbumsByCategory([FromUri] string[] categoryList)
{
//your code here
}

就您个人而言,在您的情况下,我会选择选项 3 - 尽管冗长的语法对于任何 API 用户来说都很熟悉,然后是选项 1。如果您有更复杂的输入模型,请选择选项 2。正如我所说没有一个比另一个更 RESTful。

关于rest - 网络 API/REST : Request list of items,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29927625/

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