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

时间:2014-10-12 23:04:09

标签: javascript jquery ajax rest

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

我在本机JS和jQuery中都了解AJAX的基础知识。我在SO和网络上做了很多关于REST的工作。关于如何使用JAVA,C#等在服务器端构建RESTful API似乎有大量信息,但关于如何使用JavaScript访问这些服务的信息很少。

以下是问题:

  1. “使用REST服务”是另一种说法“用AJAX从服务器获取数据”或其他方式吗?

  2. 如果是其他内容,关于这个主题的一些好的教程在哪里?

  3. 一旦我掌握了基础知识,我在哪里可以找到网上的RESTful API来消费?

2 个答案:

答案 0 :(得分:9)

  
    

“使用REST服务”是另一种说“使用AJAX从服务器获取数据”的方式,还是完全不同的其他方式?

  

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

基本上,REST是一种通过使用动词和名词来表达HTTP上的事务或查询的方法。例如,要获取信息,请使用...等待... GET!要放置信息,你使用PUT(或POST,下面的教程将解释差异)。要删除某些内容,请使用DELETE。它相当整洁。它几乎就像HTTP上的句子一样:

GET /users/123
DELETE /users/123

你可以猜出那些会做什么。

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

  
    

如果是其他内容,关于这个主题的一些好的教程在哪里?

  

由于两个原因,很难给出一个关于使用RESTful服务的好教程:

  1. 每项服务都不同。
  2. 这取决于您使用的语言/平台。
  3. 布雷特的回答提到了一些很好的教程。

    这是一个SO答案,它显示了一种直接在Java中使用REST的方法:How to consume REST in Java

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

    我在Jersey的REST客户端也取得了很大的成功。他们的REST(JAX-RS)服务器软件是一种巨大的痛苦(在我看来),但他们的客户端非常光滑。

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

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

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

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

    1. 您是否了解使用各种方法以及随之而来的设计模式,命名约定等通过HTTP交换数据的基本语义?
    2. 您是否认识到将CRUD操作映射到HTTP请求的事实标准(例如使用GET /resources列出所有资源,POST /resources创建新资源,PUT /resources/x更新资源X等等)?
    3. 您熟悉各种HTTP响应代码以及何时/如何使用它们?您是否总能认为成功的响应会产生200状态代码?如果您创建一个新资源,是否有另一个常用的状态代码(是的,有)?
    4. 您是否实际编写了任何代码来使用现有服务?
    5. 您可以轻松测试服务吗?例如,使用curl非常精确地创建HTTP请求。
    6. 还有奖金,但是大多数人都没有很好地掌握这一点(我很难理解其个人用途),是通过使用Accepts标题进行版本控制的超媒体。

        
          

      一旦我掌握了基础知识,我在哪里可以找到网络上的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和提供商来发布它们,例如MashapeMashery,尽管后者似乎更关注提供商而不是消费者从他们的网站来看。

      我之前发布的github项目,带有我的概念验证,从Searchly和Twilio访问REST API,以便我可以搜索任务,当一个标记完成时,再次向我发送短信来自HTTP请求。但是,我使用这些提供程序中的客户端库而不是使用直接HTTP库来使代码更精简和更集中,而不必担心所有的HTTP管道。

答案 1 :(得分:2)

出于您的目的,点击一个宁静的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/

只是google" restful api示例[您选择的服务器端语言];那里有很多材料。

在短期内,您将要了解如何使用restful API完成跨服务器端脚本编写,以及如何使用JSONP:

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