本指南将引导您使用一个简单的rest.js客户端,该客户端使用一个基于Spring MVC的RESTful Web服务

你会建立什么

您将构建一个rest.js客户端,该客户端使用基于Spring的RESTful Web服务。具体来说,客户端将使用在使用CORS构建RESTful Web服务中创建的服务

可以通过打开index.html文件在您的浏览器中,并在以下位置使用接受请求的服务:

http://rest-service.guides.spring.io/greeting

该服务将以问候的JSON表示形式进行响应:

{"id":1,"content":"Hello, World!"}

客户端会将ID和内容呈现到DOM中。

您可以使用url中的可选查询字符串来自定义问候语:

http://localhost:8080/?User

该代码将向REST端点发送一个参数,并将自定义问候语呈现到DOM中。

你需要什么

  • 约15分钟

  • 最喜欢的文字编辑器

  • 现代的网络浏览器

  • 互联网连接

  • 预安装Node.js和Git

  • Bower作为全局node.js JavaScript软件包安装

创建凉亭配置文件

首先,创建一个凉亭控制文件, .bowerrc 。该文件告诉bower将JavaScript依赖项放在何处。的.bowerrc文件应位于项目的根目录({project_id} / initial),格式为JSON:

.bowerrc

{
	"directory": "public/lib"
}

从项目根目录的命令提示符运行bower init 。这将创建一个bower.json描述项目所需的每个JavaScript包的文件。Bower会询问一些信息,例如项目名称,许可证等。如有疑问,只需按Enter接受默认值。

接下来,使用Bower安装rest.js和AMD模块加载器,例如curl.js。在命令提示符下,键入:

bower install --save rest#~1
bower install --save curl#~0.8

Bower会将rest.js和curl.js安装到我们在列出的目录中.bowerrc 。由于我们指定了--save选项,bower将软件包信息存储在bower.json文件。

Bower应该发现rest.js取决于when.js并安装兼容版本。

完成后, bower.json文件应具有“依赖项”对象属性,该属性将“ curl”和“ rest”作为属性名称列出,并将它们的semver信息作为值列出:

bower.json

{
  "name": "consuming-rest-rest.js",
  "version": "0.0.1",
  "authors": [
    "John Hann <[email protected]>"
  ],
  "license": "http://www.apache.org/licenses/LICENSE-2.0",
  "ignore": [
    "**/.*",
    "node_modules",
    "public/lib",
    "test",
    "tests"
  ],
  "dependencies": {
    "curl": "~0.8",
    "rest": "~1"
  }
}

创建一个渲染模块

首先,创建一个渲染函数以将数据注入HTML文档。

public/hello/render.js

define(function (require) {

    var ready = require('curl/domReady');

    return render;

    function render (entity) {
        ready(function () {
            var idElement, nameElement;

            idElement = document.querySelector('[data-name="id"]');
            nameElement = document.querySelector('[data-name="content"]');

            idElement.textContent += entity.id;
            nameElement.textContent += entity.content;
        });
    }

});

AMD模块使用简单的DOM查询和操作将文本注入文档中。为了确保在准备就绪之前不使用DOM,render模块会导入并使用curl.js的domReady功能模块。

在实际的应用程序中,您将需要使用数据绑定模板化 ,而不是如此处所示的DOM操作。

创建一个应用程序组合模块

接下来,创建一个将组成应用程序的模块。

public/hello/main.js

define(function (require) {

    var rest = require('rest');
    var mime = require('rest/interceptor/mime');
    var entity = require('rest/interceptor/entity');
    var render = require('./render');

    var endpointUrl, name, client;

    endpointUrl = 'http://rest-service.guides.spring.io/greeting';
    name = document.location.search.slice(1);

    client = rest
        .chain(mime, { mime: 'application/json' })
        .chain(entity);

    client({ path: endpointUrl, params: { name:  name } })
        .then(render);

});

主模块从文档的位置对象读取查询字符串,配置rest.js mime客户端,然后调用REST端点。

rest.js返回Promises / A + promise ,它将调用render端点返回数据时的功能模块。的render函数需要实体,但是rest.js客户端通常返回响应对象。“休息/拦截器/实体”拦截器将实体从响应中删除,并将其转发到render功能。

创建启动脚本

接下来,创建启动脚本, run.js

public/run.js

var curl;
(function () {

    curl.config({
        main: 'hello',
        packages: {
            // Your application's packages
            hello: { location: 'hello' },
            // Third-party packages
            curl: { location: 'lib/curl/src/curl' },
            rest: { location: 'lib/rest', main: 'rest' },
            when: { location: 'lib/when', main: 'when' }
        }
    });

}());

此脚本配置AMD加载程序: curl.config() 。的main配置属性告诉curl.js在哪里可以找到应用程序的主模块,该模块将自动获取并评估。的packages config对象告诉curl.js在我们的应用程序的程序包或第三方程序包中找到模块的位置。

创建应用程序页面

最后,创建一个index.html文件并添加以下HTML:

public/index.html

<!doctype html>
<html>
    <head>
        <title>Hello rest.js</title>
        <script data-curl-run="run.js" src="lib/curl/src/curl.js"></script>
    </head>
    <body>
        <div>
            <p data-name="id">The ID is </p>
            <p data-name="content">The content is </p>
        </div>
    </body>
</html>

script元素加载curl.js,然后加载名为“ run.js”的应用程序启动脚本 。引导脚本会初始化和配置AMD模块环境,然后启动客户端应用程序代码。

运行客户端

要运行客户端,您需要将其从Web服务器提供给浏览器。Spring Boot CLI(命令行界面)包括嵌入式Tomcat服务器,它提供了一种简单的方法来提供Web内容。有关安装和使用CLI的更多信息,请参见使用Spring Boot构建应用程序

为了从Spring Boot的嵌入式Tomcat服务器提供静态内容,您还需要创建少量的Web应用程序代码,以便Spring Boot知道如何启动Tomcat。下列app.groovy脚本足以让Spring Boot知道您要运行Tomcat:

app.groovy

@Controller class JsApp { }

您现在可以使用Spring Boot CLI运行该应用程序:

spring run app.groovy

应用启动后,在浏览器中打开http:// localhost:8080 ,您会在其中看到:

从REST服务检索的模型数据将呈现到DOM中。

每次刷新页面时,ID值都会增加。

摘要

恭喜你!您刚刚开发了使用基于Spring的RESTful Web服务的rest.js客户端。