gpt4 book ai didi

子类型的 rest api 接口(interface)

转载 作者:行者123 更新时间:2023-12-05 07:45:20 25 4
gpt4 key购买 nike

我在为我的管理员想出一个稳定的 URL 结构时遇到了一些麻烦。在管理员中,我有“用户”,但用户也有子类型——例如:内部员工、客户经理、客户员工——这些用户中的每一个都有特定的属性。对于创建新用户的场景,只需 POST/users 并包含一个属性“type”来说明它是什么类型的用户就足够容​​易了。但是,在记录此端点时,此解决方案似乎不太正确。每种用户类型都有不同的属性,只有该用户类型才需要这些属性,仅举几例:

  • 内部员工:主管 ID、办公室 ID、各种内部标志
  • 客户主管:部门id,公司id,通知偏好的各种标志
  • 客户员工:部门编号、公司编号、地址、营业时间

虽然这些用户中的每一个都有一组共同的值,如用户名、密码、电子邮件,但感觉将它们都创建到同一个端点会在我们开始记录时造成混淆,因为不清楚哪些字段需要哪些字段用户类型(除非你看代码)。我的另一个想法是为每种用户类型创建端点,例如:

POST /users/internal_staff
POST /users/client_supervisors
POST /users/client_staff

我很想听听处理过此类结构问题的人的意见,以及他们发现的最合理的解决方案。

最佳答案

您的 POST/users 方法非常正确。创建三个不同的端点就像在所有三种不同的方法中重复您的代码。

正如您明确提到的,当您对三种不同的员工子类型使用相同的端点时,您将需要处理文档。最好的选择是创建包含不同类型员工记录的枚举并发布它。作为文档的一部分,您需要提及员工类型的可能值。 (例如,可以是 internal_staff_member、client_supervisor 或 client_staff)。

如果您收到任何不同类型的请求(上述值除外),您将需要抛出一个异常,提示“员工类型无效”。员工类型可以是..'。

在文档中,您需要非常清楚地提及一些业务规则,说明哪些属性对于哪种类型的员工是强制性的。 (例如,当员工类型是 - client staff,则 - payload 必须包含以下属性:部门 ID、公司 ID、地址、营业时间 .等)。

为了支持这些业务规则和验证,我们使用自定义注释(使用 java 和 spring)。

关于子类型的 rest api 接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41769988/

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