gpt4 book ai didi

c# - 具有分页、排序和过滤功能的 Web API Get 方法

转载 作者:行者123 更新时间:2023-12-04 09:54:51 24 4
gpt4 key购买 nike

我正在创建一个 WebAPI,其中 get 方法需要接受分页、排序和过滤等参数。
由于排序和过滤可以是键值对的列表,过滤也有操作符(gt、lt、equals、contains...),而且我们知道get方法不推荐在body中发送对象,这是怎么回事为 API 处理的场景?

最佳答案

只需将它们传递为 Query String .
这是分页、排序和过滤等行为的最佳实践,因为它可以被用户添加书签并重复使用。

您可以在许多著名网站上看到您的答案,例如在 SO 中查看下面的过滤器参数:

https://stackoverflow.com/questions?sort=Newest&filters=NoAnswers,NoAcceptedAnswer,Bounty

@AdrianoRepetti 在评论中提供了很多有用的补充,我在获得许可后添加了这些评论:

有几种不同的方法:

例如排序:

http://www.example.com/api/orders?sort=field1,field2

http://www.example.com/api/order?sort=field1&sort=field2

现在让我们改进一下:您还需要排序顺序,它可以很好地表示为:

http://www.example.com/api/orders?sort=created_at+asc,delivered_at+desc .

过滤器可能更复杂。一个简单的场景:

http://www.example.com/api/order?filter=status%3dpending (注意 %3d 转义 = ,API 将看到 status=pending 作为过滤器参数)。你需要更多的ANDed过滤器吗?只需连接或重复它们(如排序)。如果您支持其他运算符,则可以使用其他字符代替 %3d。如果事情变得更复杂,那么您将需要您自己的迷你语言来表达您的过滤器(记住对 URI 组件客户端进行编码!!!)

迟早你会需要让你的查询更复杂,然后太长而无法放入查询字符串(例如,当你需要一个 IN 运算符时)。拥有 POST 是完全可以接受的(并被广泛使用)而不是 GET对于此类查询(例如,请参阅 OpenData )。你可以为你的过滤器想出一些更复杂的方案,但一个简单的 JSON对象(或下摆 GraphQL)通常是更好、更容易的选择

关于c# - 具有分页、排序和过滤功能的 Web API Get 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61941591/

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