【发布时间】:2016-09-08 13:20:07
【问题描述】:
我在网站上有两种类型的用户:简单用户(客户)和专业用户(表演者)。
表演者可以包含在第三种实体类型 - 团队中。
客户可以
- 客户端可以写入客户端。
- 客户端可以写入执行者。
- 客户可以写信给团队。
表演者可以
- 执行者可以写入客户端。
- Performer 可以写信给 Performer。
- 表演者可以写信给团队。
您可以建议哪些 API 路径来处理消息流,具体考虑以下几点:
1) 客户和执行者应该能够互相写消息并向团队发送消息。
2) 客户和表演者应该能够获得他们正在参与的“聊天”列表。
使这个流程成为 RESTful 的最佳实践是什么?
UPD。
表格
我会尽量具体一点 - 我有这些表格:
-
client- 存储所有客户端的数据(
client_id、first_name、last_name等)
- 存储所有客户端的数据(
-
performer- 存储所有表演者的数据(
performer_id、first_name、last_name、service_area_title等)
- 存储所有表演者的数据(
-
team- 仅包含团队的头衔和一些元数据,例如performers_count
-
teams_performersteam_id,performer_id对于 NxM 关系
至于messages,存在以下表格:
-
message-
message_id,message,owner_id,owner_type,created_at - owner_type 是 ENUM,可以是
client或performer
-
-
chat-
chat_id,created_at,updated_at -
updated_at与聊天中最后一条消息的 created_at 相同
-
-
chats_participants-
chat_id,participant_id,participant_type
-
-
chat_messages-
chat_id,message_id
-
API
基本api url如下:api.site.com/v1/
客户、表演者和团队可以被视为资源,即我已经有如下方法:
-
创建客户
POST api.site.com/v1/clients -
表演者更新
PATCH api.site.com/v1/performers/:performerId -
获得表演者参与的团队
GET api.site.com/v1/performers/:performerId/teams -
从团队中移除表演者
DELETE api.site.com/v1/teams/:teamId/performers/:performerId
【问题讨论】:
-
您基本上是在要求我们为您设计您的项目,在这里问太多了。 “API 路径”应基于您的模型相互关联的方式等,由于您尚未定义,我们无法建议任何“API 路径”。
-
谢谢你,蒂姆。为了更清楚,我更新了描述。
-
好的,那么现在的问题是什么?你已经解决了吗?