首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为下列用例设计REST的最佳实践是什么?

为下列用例设计REST的最佳实践是什么?
EN

Stack Overflow用户
提问于 2019-11-25 22:32:52
回答 3查看 75关注 0票数 0

用户可以在应用程序/users中单独使用

获取/id GET userDetails

POST saveUserDetails

管理员可以创建事件供用户注册。

/events

发布用于更新事件的saveEvent PUT /{ event }

删除/{ event -id}删除事件

现在,问题是您会将用户放置到事件注册uri的哪个位置?

是/events/{event-id}/register吗?

或/user/{user-id}/events?event-id=xxx

我还想获得用户已注册的事件列表。

请帮助我进行更好的API设计。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-11-26 00:58:56

这里没有正确的答案,所以我将把我可能使用的模式放在帽子里:

代码语言:javascript
复制
POST /user    - register a new user
GET /user/:id - Get user info
PUT /user/:id - Update user info

POST /event       - create an event
PUT /event/:id    - Update an event
GET /event/:id    - Get event details
DELETE /event/:id - Delete event

GET /event/:id/attendees - Get list of attendees
POST /event/:id/attendees - Add user to list of attendees

GET /user/:id/event - Get list of events that user is attendee of
票数 1
EN

Stack Overflow用户

发布于 2019-11-25 22:53:22

主要目标是向事件注册。那么你应该从/events开始

这就是为什么/events/{event-id}/register在我看来很好。

票数 1
EN

Stack Overflow用户

发布于 2019-11-25 23:13:00

您可以通过多种方法来实现这一点,但我认为最佳实践是,您应该能够从URL本身了解您想要实现的目标。

例如,Admin希望创建一个事件:

帖子:{basePath}/a/events或{basePath}/admin/events

  • 管理:定义此操作是由管理员执行的。
  • 事件:定义正在对事件实体执行的操作。

现在用户希望注册该事件,因此

帖子:{basePath}/u/events/{eventId}或{basePath}/user/events/{eventId}

  • 用户:定义此操作是由用户执行的
  • events:定义正在对events实体执行操作。它可以是多个实体,因此在path变量中添加eventId来定义您需要注册的对象。

现在,在上面的示例中,我假设您可以从会话中获取请求中的用户详细信息或捕获它,但是如果您不想遵循这种情况,那么您可能需要使用下面的示例(假设路径变量是获取用户上下文的唯一选项)。

帖子:{basePath}/u/{Id}/events/{eventId}或{basePath}/users/{userId}/events/{eventId}

如果您愿意,可以阅读更多关于命名指南的这里

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59041100

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档