如何为其余部分建模 API URL

How to model the Rest API URL

有一个代表一本书的模型。

class Book {
    String author;
    String isbn;
    String releaseDate;
}

我想创建一个 API returns 列表 isbn 的图书,其发布日期是用户提供的。这个 URL 应该是什么样子?

What how this URL should look like?

URL可以随便看,只要符合RFC 3986中定义的生产规则即可。

您可能需要 范围 的资源标识符,其中资源仅因发布日期而异。这表明您想要使用可以使用 URI template.

描述的标识符模式

如果用户使用 Web 浏览器与您的资源进行交互,那么您可能希望 URI 以 HTML 表单期望的方式工作,并将 application/x-www-form-urlencoded 键值对作为查询部分。

对于长期存在的资源,您需要不需要更改的 URI - 请参阅此 guidance from TBL in 1998

但除了像这些简单的机械规则之外,机器不关心你使用什么拼写约定——所以你应该选择让你关心的一些人的生活更轻松的拼写(即:选择一个符合OPS 需要审查 HTTP 访问日志,或选择易于记录的拼写,或选择在浏览器历史记录中易于识别的拼写....)


对于发布日期部分,您可能希望日期字段与 ISO 8601 格式之一相匹配;例如,请参阅 java.time.format.DateTimeFormatter.

的文档

如果 HTML 用例很重要,请务必查看 date inputs

考虑到您正在使用 springrest 所以我的想法是:

@RestController(value="/getBooks")
public class Controller{
..
@GetMapping(value="/getIsbn")
public List<String> getIsbn(@RequestParam String releaseDate){
 ..
}
}

你的 URL 看起来像(考虑到你正在解析 YYYY-MM-DD 日期格式) GET:

   https://<your context root>/getBooks/getIsbn&releaseDate=2022-05-03