繁体   English   中英

REST API:请求主体为JSON还是普通POST数据?

[英]REST API: Request body as JSON or plain POST data?

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

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

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

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

现在,你决定什么格式去真正应该更多的是如何你的API通常使用的问题。 如果它主要是从Web浏览器提交表单提交,那么使用表单字段编码可能是最合理的事情,因为它使客户端的交互更容易。

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

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

最后,请选择服务器端的最简单的内容,以及客户端上的最简单(因为我假设您也将编写相关API的主要客户端使用者)。 简单性总是优先于复杂性,直到您可以明确地表明更复杂性为您带来可衡量的好处。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM