更新 Web 服务

区域 ID

REGION_ID 是 Google 根据您在创建应用时选择的区域分配的缩写代码。此代码不对应于国家/地区或省,尽管某些区域 ID 可能类似于常用国家/地区代码和省代码。对于 2020 年 2 月以后创建的应用,REGION_ID.r 包含在 App Engine 网址中。对于在此日期之前创建的现有应用,网址中的区域 ID 是可选的。

详细了解区域 ID

本指南的这一部分将介绍如何编写、测试和部署您在上一部分部署 Web 服务中部署的示例 Web 服务的更新。

准备工作

如果您尚未完成此“构建应用”指南中的前几个部分,请执行以下操作:

  1. 通过 App Engine 应用创建 Google Cloud 项目
  2. 编写一个简单的 Node.js Web 服务
  3. 在 App Engine 上部署该 Web 服务

更新示例 Web 服务

以下部分使用表单和处理程序更新示例 Web 服务,以便在用户提交表单时进行响应。

创建一个表单供用户输入数据

您可以创建一个 HTML 表单,供用户向服务器提交数据。

  1. my-nodejs-service 文件夹中,创建一个名为 views 的文件夹以存储 HTML 文件。

  2. views 文件夹中,创建一个名为 form.html 的文件并添加以下代码:

    <!DOCTYPE html>
    <html>
      <head>
        <title>My App Engine App</title>
      </head>
      <body>
        <h2>Create a new post</h2>
        <form method="POST" action="/submit">
          <div>
            <input type="text" name="name" placeholder="Name">
          </div>
          <div>
            <textarea name="message" placeholder="Message"></textarea>
          </div>
          <div>
            <button type="submit">Submit</button>
          </div>
        </form>
      </body>
    </html>

通过这个简单的表单,用户可以输入要发送到服务器的姓名和消息。它通过对 /submit 的 HTTP POST 请求来发送数据,如 <form> 元素中的 methodaction 特性所指定。

此时的文件结构应如下所示:

my-nodejs-service/
  views/
    form.html
  app.yaml
  package.json
  server.js

显示表单

  1. 将下面一行代码添加到 server.js 文件的顶部以导入 path 模块:

    const path = require(`path`);
    
  2. 添加以下 Express 处理程序,以便在用户浏览到 /submit 时显示该表单:

    app.get('/submit', (req, res) => {
      res.sendFile(path.join(__dirname, '/views/form.html'));
    });

为提交的数据创建处理程序

当用户向服务器提交消息时,含有该消息数据的 POST 请求将被发送至 /submit。如需从请求正文中读取该数据,请使用 Express urlencoded 中间件并创建新的请求处理程序。

  1. 将您的应用设置为使用 Express urlencoded 中间件:

    // This middleware is available in Express v4.16.0 onwards
    app.use(express.urlencoded({extended: true}));
  2. POST 处理程序添加到 server.js 文件以读取数据:

    app.post('/submit', (req, res) => {
      console.log({
        name: req.body.name,
        message: req.body.message,
      });
      res.send('Thanks for your message!');
    });

此示例处理程序将用户的姓名和消息记录到控制台,但您也可以对数据执行操作或将其存储在数据库中。

在本地测试表单

部署更改之前,请在本地测试新表单。

  1. 启动 Node.js 服务器:

    npm start
    
  2. 访问 http://localhost:8080/submit 以查看您的表单。

    使用该表单提交消息。您应该会在终端中看到您的姓名和消息。

部署更改

部署更新时,系统将创建默认服务的新版本,并自动将流量路由到最新版本。要进行部署,请执行以下操作:

  1. my-nodejs-service 文件夹运行以下命令:

    gcloud app deploy
    

    此命令就是部署网络服务中介绍的命令。

  2. 确认 Google Cloud 控制台中是否列出了新版本:

    查看版本

    您应该看到与先前和当前部署相对应的两个版本。

部署完成后,您可以前往 https://PROJECT_ID.REGION_ID.r.appspot.com/submit 访问新表单。试试用它来提交一两条消息吧!

如果您不再需要以前的版本,可从 Google Cloud 控制台的“版本”页面中将其删除。

后续步骤

现在您的应用已经有了可供用户提交数据的表单,接下来您可以了解如何在 Google Cloud 控制台中查看应用日志