REST API:请求正文为 JSON 还是普通的 POST 数据?

2022-08-30 17:03:18

我目前正在构建一个 REST API。所有 GET 方法当前都使用 JSON 作为响应格式。POST 和 PUT 操作的最佳实践是什么?在请求正文中使用 JSON 还是普通 POST?我找不到有关此事的任何信息。

我看到Twitter使用POST例如:https://dev.twitter.com/docs/api/1/post/direct_messages/new

使用 JSON 格式有什么好处?我从github获得的API控制器(已经完成了一半)期望JSON。真的很想知道为什么我会选择使用它。


答案 1

POST,PUT,GET都是HTTP动词,并且本身并不表示用于传输数据的格式,因此没有POST格式。这意味着您可以按照自己选择的任何方式对数据进行编码。

现在,您决定使用哪种格式实际上应该更多地取决于您的API通常如何使用。如果它主要来自Web浏览器提交表单,那么使用表单字段编码可能是最合理的做法,因为它使客户端更容易进行交互。

另一方面,如果您主要要从 AJAX 调用接收 JSON 数据,则接收 JSON 格式可能是有意义的。如果您同时执行这两项操作,则没有任何理由不能接受两种格式的数据。

要考虑的另一个方面是您将来回传递的数据结构的复杂性。表单编码(也类似于查询字符串编码)是一种键值结构,而 JSON(或 XML)允许更丰富的数据结构。

最后,在服务器端和客户端使用最简单的方法(因为我假设您还将编写相关API的主要客户端使用者)。简单性总是优于复杂性,直到你能明确地证明更多的复杂性会给你带来可衡量的好处。

另外,我要提到的最后一件事是,REST不仅仅是干净的URL或正确使用HTTP动词。这些方面实际上只是锦上添花。REST架构背后的核心思想是超文本是应用程序状态的引擎。通过简单地跟踪服务器响应中的URL,一个好的客户端可以了解所有可用的操作,并且只需要知道基本URL。其他一切都可以从中发现。再加上定义良好的内容类型,您就拥有了一个世界,其中许多客户端可以与许多服务器进行通信,这些服务器都使用相同的“语言”,并且客户端不需要知道有关服务器的任何信息(反之亦然),除了基本URL和内容类型。这就是 REST 的全部意义所在。


答案 2

这取决于您要交换的数据。如果它是一个复杂的结构,你需要以结构化的方式(例如.XML或JSON)发送它。在java Web应用程序中,json更轻量级,因此它比XML更可取。

如果您想从表单发送一些字段“application/x-www-urlformencoded”类型也可以使用。


推荐