【发布时间】:2014-03-16 21:30:27
【问题描述】:
也许我让事情变得混乱或过于复杂,但我正在努力开发一个支持 HTML 和 JSON 内容类型的 RESTful API。以一个简单的用户管理功能为例。我希望有一个如下所示的 API:
- GET /users:列出所有用户
- GET /users/{id}:查看单个用户
- POST /users:创建一个新用户
使用 JSON 有效负载向 /users 发布的程序化客户端会期望 201 Created 响应,其中包含 Location 标头,指定新创建用户的 URL,例如/用户/1。但是,通过 Web 浏览器创建用户的人将使用表单编码的有效负载发布到相同的 URL,并希望被重定向到用户列表页面,这需要 API 返回带有 Location 标头的 302/303 重定向/用户。
从纯粹概念的角度来看,API 会根据提交的内容类型做出不同的反应,这让我感到惊讶,我想知道这是否是糟糕的设计。再说一次,将程序化 API 和以 Web 为中心的 API 视为同一个 API 可能是错误的,我们不应该担心这些问题,而应该更多地担心为不同的客户提供良好的体验。
你怎么看?
【问题讨论】: