JavaScript:学习如何“使用RESTful API”

我一直在编写JS几年,现在正在学习更多。 看到很多雇主要求“了解REST API”或“体验消费RESTful服务”。

我知道AJAX的基础知识,包括原生JS和jQuery。 我在SO和网络上做了一些相当不错的REST操作。 似乎有大量关于如何使用JAVA,C#等构建RESTful API服务器端的信息,但关于如何使用JavaScript访问这些服务的信息很少。

以下是问题:

  • “使用RESTful服务”是另一种说“使用AJAX从服务器获取数据”的方式,还是其他的方式?

  • 如果是别的,那么关于这个主题的一些很好的教程在哪里?

  • 一旦我了解了基础知识,我可以在哪里找到Web上的RESTful API来使用?


  • “使用RESTful服务”是另一种说“使用AJAX从服务器获取数据”的方式,还是其他的方式?

    不,完全没有,但是您肯定可以使用AJAX来使用您自己的REST API。 Ajax通常意味着xmlHttpRequest ,这本质上是一个Web浏览器的概念。 RESTful API更像是一个服务接口。 在许多方面,这是一个Web服务,但没有SOAP的复杂性。

    从本质上讲,REST是通过使用动词和名词来表达通过HTTP进行的事务或查询的一种方式。 例如,要获取信息,请使用...等待...获取! 把信息,你使用PUT(或POST,下面的教程将解释不同之处)。 要删除某些内容,请使用DELETE。 它非常整齐。 它几乎像HTTP上的句子一样读取:

    GET /users/123
    DELETE /users/123
    

    你可以猜到这些会做什么。

    因为这些只是HTTP请求,所以它们通常可以使用AJAX消耗,但是,这不是必需的。 事实上,我发现REST API对于向其他应用程序公开服务或数据更有用,就像Web服务一样。

    如果是别的,那么关于这个主题的一些很好的教程在哪里?

    由于以下两个原因,很难提供有关使用RESTful服务的良好教程:

  • 每项服务都是不同的。
  • 这取决于你在工作的语言/平台。
  • 布雷特的回答提到了一些很好的教程。

    这是一个SO答案,它展示了一种直接在Java中使用REST的方法:如何在Java中使用REST

    下面是一个合理的教程,介绍如何使用Java中的JAX-RS API创建RESTful API,然后演示如何使用它:http://www.mkyong.com/webservices/jax-rs/restfull-java-client-与Java的净网址/

    我也在Jersey的REST客户端取得了很好的成功。 他们的REST(JAX-RS)服务器软件是一个皇家的痛苦(在我看来),但他们的客户非常漂亮。

    我在去年春天用Java编写了一个简单的概念验证待办事项列表REST API,并且集成测试显示,很好地使用Jersey客户端来使用API​​进行测试。

    https://github.com/brandonramirez/todo-api/blob/master/src/test/java/com/brandonsramirez/todoApi/TaskResourceTest.java

    我也是Unirest客户端的粉丝,这是一个REST客户端,翻译成几种语言并具有类似的界面。 他们有Objective-C版本,Java版本,JavaScript / node.js版本,.NET版本等。

    如果雇主正在寻找使用REST API的经验,他们可能需要五件事情:

  • 您是否理解使用各种方法和设计模式,命名约定等与HTTP一起交换数据的基本语义?
  • 您是否认识到将CRUD操作映射到HTTP请求上的事实标准(如使用GET /resources来列出所有资源, POST /resources来创建新资源, PUT /resources/x来更新资源X等)?
  • 您是否熟悉各种HTTP响应代码以及何时/如何使用它们? 就像你可以总是假设一个成功的响应产生一个200状态码? 如果你创建一个新的资源,是否有另一个常用的状态码(是的,有)?
  • 您是否真的编写过任何代码来使用现有服务?
  • 你可以轻松测试一项服务吗? 例如,使用curl可以非常精确地创建一个HTTP请求。
  • 还有一个好处,但是大多数人对此没有很好的理解(我个人很难理解它的用处),它是通过与Accepts头交换来进行版本控制的超媒体。

    一旦我了解了基础知识,我可以在哪里找到Web上的RESTful API来使用?

    遍! 每个人都有一个! Twitter,Facebook,Twilio,Stripe,Google,Edmodo,亚马逊。 我可以永远继续下去。 在IaaS领域,Amazon Web Services和Rackspace Cloud都提供了用于管理云基础架构的RESTful API。 例如,我可以向代表我的一组服务器的URL发出HTTP POST请求,并向我提供新的服务器(虚拟机)。

    https://stripe.com/docs/api

    https://api.imgur.com/

    有很多甚至有枢纽服务来帮助消费者找到API和供应商发布它们,比如Mashape和Mashery,虽然后者似乎比消费者更关注供应商,从他们的网站来看。

    我之前发布的github项目,以及我的概念证明,从Searchly和Twilio访问REST API,以便我可以搜索任务,并且当标记为完成时,再次向我发送文本消息,全部来自HTTP请求。 但是,我使用了这些提供程序的客户端库,而不是使用直接HTTP库来使代码更加精简和更专注,而不必担心所有HTTP管道。


    出于您的目的,打击一个restful API将非常类似于通过常规AJAX与服务器交互。 不同的是,这个API将遵循restful模型,其中各种类似CRUD的操作将符合REST使用特定HTTP动词[GET,PUT,POST,DELETE]的特定模式,以及它引用实体的路径模型。

    看一看:

    http://www.restapitutorial.com/lessons/httpmethods.html

    如果你想玩一个安静的API,那么有几个框架可以在几分钟内完成。

    我可能会用这个Sinatra; 虽然有很多选择:

    http://www.andrewhavens.com/posts/20/beginners-guide-to-creating-a-rest-api/

    只是谷歌“宁静api示例[您选择的服务器端语言];那里有很多材料。

    简而言之,您需要了解如何使用restful API完成跨服务器端脚本编写,以及如何使用JSONP:

    http://www.ibm.com/developerworks/library/wa-aj-jsonp1/

    链接地址: http://www.djcxy.com/p/12333.html

    上一篇: JavaScript: Learning how to "consume RESTful APIs"

    下一篇: What are REST web services?