【发布时间】:2021-09-30 10:02:04
【问题描述】:
这是我的第一篇文章,所以请多多包涵。
我正在设计一个新的 RESTful API,在我的客户如何与他们创建的资源交互方面我有两种设计选择。
例如,我有一个资源:“book”,它是一个简单的单例资源。
创建一本新书非常简单:
POST https://api.mydomain.com/book
我知道如果我希望操作是幂等的,我也可以使用 PUT。
此问题仅与 200 OK 响应选项有关,返回:
-
创建的“书”的匿名资源标识符 (UUID):
{
book_id = 12345-67890
title = "一个奇妙的故事"
}
-
创建的“书”的完整 FQDN URI:
{
book_uri = "https://mylibrary.mydomain.com/upstairs/book/12345-67890
title = "一个奇妙的故事"
}
这当然会显着影响客户随后对“书”的操作。
要获得上述书籍的标题,客户端 API 调用可以是:
注意:客户端将始终使用与 POST 调用相同的端点,只是简单地附加了 book-id。
-
获取 {book-uri}
示例:GET https://mylibrary.mydomain.com/upstairs/book/12345-67890
注意:客户端将直接从 POST 响应中使用 {book-uri} 对象变量。重要的是,返回的 {book-uri) 可能与用于创建“书”的 POST 的 URI 完全不同。
所以我的问题(请)是:
Q1) 哪个模型更适合客户使用,为什么?
Q2) 您是否发现在大容量商业系统中使用选项 2 有任何问题?
提前感谢您的帮助和解答。
【问题讨论】:
标签: rest server client uri api-design