与关联资源的Best Rest API命名约定

时间:2019-01-07 07:02:06

标签: java spring rest spring-boot

以下是我拥有的其余端点。我希望用户呼叫第一个端点,而对于后续呼叫,我希望用户ID处于请求中。实现此目标的最佳方法是什么?

1. POST www.test.com/v1/users (return userid)
2. POST www.test.com/v1/services
3. PUT  www.test.com/v1/services/{serviceId}
4. DELETE www.test.com/v1/services/{serviceId}
5. GET www.test.com/v1/services?search="search string for dynamic query"
6. PATCH www.test.com/v1/services/{serviceId}/{state}

2 个答案:

答案 0 :(得分:1)

这取决于您的域和要表达的内容。通常,用户凭据是标头的一部分。但是,如果您想使其明确,则可以将其作为url的一部分:

/v1/{userId}/services/

通常,我使用 aggregation vs composition 来确定它是否是嵌套资源。

答案 1 :(得分:0)

进一步的调用可能在请求标头中有www.test.com/v1/users返回的用户ID(应该加密?)。

如果不需要向用户公开userId,则可以使用任何编码器并生成哈希值(该登录会话/会话ID唯一的个人访问令牌)。每次发出后续请求时,都可以验证会话ID,然后继续执行进一步的操作。

此外,我认为后者应该是您的选择。另外,请尝试根据生成的会话ID设置会话保留有效时间。

相关问题