RESTful API下查询单执业医师可预约时段的端点URL选型
适配现有资源体系的合规RESTful端点设计
你当前已经搭好了「门店为根节点,下属挂载医师、下属挂载预约记录」的嵌套路由结构,可预约时段本质是医师实体下的派生子资源——即医师自带的排班数据,扣除已被预约占用的时段后计算得出的结果,完全不需要重构现有路由逻辑,推荐采用如下端点:GET /api/stores/:storeId/practitioners/:practitionerId/available-slots
- 设计说明:
- 完全贴合现有路由逻辑:你已配置的医师端点本来就挂载在门店路径下,保留这个层级仅把原来指代门店ID的模糊参数
:id明确为:storeId,避免后续协作时的参数歧义 - 路径中的
:practitionerId用来定位要查询的指定执业医师 available-slots作为医师下属的独立子资源,路径中未嵌套操作类动词(例如不要写成/get-available-slots),完全符合RESTful「路径仅描述资源、不描述操作行为」的设计规范
- 完全贴合现有路由逻辑:你已配置的医师端点本来就挂载在门店路径下,保留这个层级仅把原来指代门店ID的模糊参数
- 配套查询参数完全合规:
日常查询可预约时段必然需要划定时间范围,直接在query参数中增加startDate、endDate即可,实际请求示例:/api/stores/101/practitioners/24/available-slots?startDate=2024-06-10&endDate=2024-06-16
不推荐的写法(容易破坏规范)
- 不要把可预约时段的查询请求塞到
/api/stores/:id/appointments端点下:该路径对应的资源是「已持久化的预约记录」,可预约时段是实时计算的派生数据,并非已存在的预约实体,混用会打乱资源边界 - 如果后续业务需要支持医师跨门店兼职,可再将医师资源提升一级,改写为
GET /api/practitioners/:practitionerId/available-slots即可;但按你当前给出的「医师单实体关联所属门店」的模型,完全没必要做这种结构调整。
内容的提问来源于stack exchange,提问作者Raffi
相关产品推荐
相关产品推荐

