与Java的jax-rs一样的完整REST api包含定义资源路径的定义,使用完整的GET,POST,PUT请求。
但通常当我遇到REST API时,它通常是标准的HTTP GET请求,响应是JSON输出。看起来现实世界的REST请求的核心是使用JSON输出,但REST的真正定义允许XML,JSON或其他输出类型。
例如,twitter API有“JSON”输出,他们使用GET请求,这里有一些URL:
https://dev.twitter.com/docs/api/1.1/get/search/tweets
您仍然可以使用“GET”参数来修改请求。似乎twitter的“搜索/推文”功能只是一个简单的http请求,其中定义良好的URI路径恰好返回JSON响应。这真的是REST吗?
什么是REST API?
在Jax-rs上 http://en.wikipedia.org/wiki/Java_API_for_RESTful_Web_Services
(对不起,如果这有点主观或轶事,但我相信开发人员对此感到疑惑)
答案 0 :(得分:3)
REST(简而言之)是一种范例,资源应该可以通过URI访问,并且可以使用类似HTTP的动词来操纵它们(也就是说,HTTP的设计考虑了REST原则)。例如,这与为您的应用程序设置一个URI并POST一个数据有效负载以告诉服务器您想要实现的目标形成鲜明对比。
粗略地说,文件系统通常是RESTful。不同的资源存在于易于访问和写入的不同地址(目录)中,尽管不一定以反映路径的方式存储在磁盘上。或者,大多数数据库不 RESTful - 您连接到数据库并通过声明性API访问数据,而不是按位置查找数据。
至于资源是什么 - HTML,JSON,一个滑水松鼠的视频 - 这是一个与遵循RESTful原则不同的抽象层次。
答案 1 :(得分:1)
REST(Representational State Transfer)是一种模糊的架构设计模式,最初是由Roy Fieldings(又名创建HTTP的人)在a paper中编写的。
大多数时候(99%的时间),当有人想要一个REST API时,他们意味着他们想要一个Web API,他们发送一个包含HTTP动词的Request和一个描述 Resource <的位置的URL / em>将由HTTP动词执行操作。然后,Web服务器在资源上执行请求的动词,并将响应发送回用户。响应通常(取决于所使用的HTTP动词)包含结果资源的表示。资源可以表示为HTML,JSON,XML或许多其他不同的mime types。
响应中使用的表示形式并不能真正表明API是否为RESTful;它是界面的URL结构如何以及如何使用HTTP谓词定义Web服务器的行为。正确兼容的REST API应使用GET动词仅读取资源,使用POST动词修改资源,使用PUT添加/替换资源,使用DELETE删除资源。 HTTP Specification中列出了对预期动词行为的更正式定义。
答案 2 :(得分:0)
REST是一个非常“松散”的标准,但JSON是一种合理的标准化格式。我唯一关注JSON的主要问题是它没有一种方法可以像XML那样显式地定义它的字符编码。至于动词,坚持使用动词的有意义的用法很好,但它们不一定在每种情况下一对一地映射,所以像往常一样,使用常识:)
答案 3 :(得分:0)
它可以是JSON,也可以是XML。 JSON并不完全是行业“标准”,但许多开发人员喜欢它(包括我),因为它轻巧而且容易。
答案 4 :(得分:0)
这就是它。 REST设计简单。它的要点是每个URL对应一个唯一的资源。资源的格式通常是json,但可以是任何内容,并且通常由url的“扩展”或“格式”部分确定。例如,“/ postts / 1.json”和“/posts/1.xml”只是同一逻辑资源的两种不同表示,分别以json和xml格式化。 RESTful接口的另一个常见特性是使用HTTP动词(如GET,PUT和POST)来检索,修改和创建新资源。这就是它的全部内容。