gpt4 book ai didi

获取子集列表的 REST 最佳实践

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

我在 REST - complex applications 阅读了这篇文章它回答了我的一些问题,但不是全部。

我正在设计我的第一个 REST 应用程序,需要将“子集”列表返回给 GET 请求。以下哪个更“RESTful”?

/patients;listType=appointments;date=2010-02-22;user_id=1234

或者
/patients/appointments-list;date=2010-02-22;user_id=1234

甚至
/appointments/2010-02-22/patients;user_id=1234

我需要返回大约十几个不同的列表。在其中一些中,会有几个过滤参数,我不想在我的服务器代码中使用大的“if”语句来根据存在的参数选择子集。例如,我可能需要特定医生的所有患者,其中覆盖医生是另一位医生,而主治医生是另一位医生。我可以选择
/patients;rounds=true;specific_id=xxxx;covering_id=yyyy;primary_id=zzzz

但这需要复杂的分支逻辑才能获得正确的列表,其中要求特定的子集(轮列表)将实现相同的目标。

请注意,我需要使用矩阵参数而不是查询参数,因为我需要在 URL 的多个级别上进行过滤。我使用的框架(RestEasy),完全支持矩阵参数。

最佳答案

拉尔夫,

特定的 URI 模式与您的应用程序将如何 RESTful 的问题正交。

对于 RESTful,重要的是客户端发现如何在运行时构造 URI。这可以通过表单或 URI 模板来实现。两个超媒体控件都告诉客户端可以使用哪些参数以及将它们放在 URI 中的什么位置。

为了让这个以 RESTful 方式工作,客户端和服务器必须在设计时知道可能的参数。这通常是通过使它们成为链接关系规范的一部分来实现的。

例如,您可以定义一个“我的子集”链接关系以具有链接到集合子集的含义,并使用它定义以下参数:

listType, date, userID.



在规范可以用作的链接模板中

<link rel="my-subset' template="/{listType}/{date}/patients;user_id={userID}"/>



请注意 URI 中的实际参数名称如何与指定的参数名称分离。 userID 的值后期绑定(bind)到 URI 参数 user_id。

这使得 URI 参数名称可以在不影响客户端的情况下更改。

您可以查看 OpenSearch 描述文档 ( http://www.opensearch.org) 以了解在实践中是如何完成的。

实际上,您应该能够在您的用例中充分利用 OpenSearch。特别是预定义查询的能力将允许您在“表单”中描述特定的子集。

但是自己看看然后再问:-)

关于获取子集列表的 REST 最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2311018/

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