全部产品

1. 创建函数和 HTTP 触发器

更新时间:2018-09-19 15:43:55

本步骤基于 HTTP 触发器搭建 Web 服务,分为两个步骤:

  • 创建配置 HTTP 触发器的函数
  • 编写函数代码

创建配置 HTTP 触发器的函数

  1. 登录 函数计算管理控制台
  2. 新建服务,本示例的服务名称为 web-server,所属区域为华东2,开启【高级配置】,配置日志项目和日志仓库,角色创建方式为新建角色,系统授权模板选择 AliyunLogFullAccess,点击 【授权】,点击【确定】。

    • 控制台新建服务请参考 新建服务
    • 函数的日志会打到日志仓库中,方便您调试,关于日志的详细信息,可参考 函数日志
    • 角色配置了此服务可以访问其他云服务的权限,关于权限的详细信息,可参考 权限简介
  3. 在左侧导航栏选择服务,进入到新建的服务中。

  4. 单击 【创建函数】,在创建函数页面:

    1. 单击 【选择全部的语言】,在下拉菜单中选择 node8 或 python2.7(本示例代码会对两种语言进行介绍)。
    2. 选择 【空白函数】。
    3. 按如下图示配置 HTTP 触发器,单击 【下一步】。
      • 认证方式选择 anonymous,不需要身份验证,支持匿名访问。
      • 请求方式为此函数可以处理的 HTTP 请求方式。HTTP 触发器配置示例
    4. 创建函数并填写所在服务、函数名称、描述信息和运行环境信息。
    5. 单击【下一步】。
    6. 核对信息无误后,单击【创建】。

编写函数代码

进入新创建的函数,根据所选的开发语言粘贴示例代码到控制台的代码编辑处。

函数的功能是将 HTTP request 请求中的参数作为 response 的信息返回。

Nodejs 函数代码

使用 Nodejs 编写代码可以参考文章 配置 HTTP 触发器的 Nodejs 函数入口

  1. var getRawBody = require('raw-body')
  2. module.exports.handler = function (request, response, context) {
  3. // get request info
  4. getRawBody(request, function (err, data) {
  5. var params = {
  6. path: request.path,
  7. queries: request.queries,
  8. headers: request.headers,
  9. method: request.method,
  10. body: data,
  11. url: request.url,
  12. clientIP: request.clientIP,
  13. }
  14. // you can deal with your own logic here
  15. // set response
  16. var respBody = new Buffer.from(JSON.stringify(params));
  17. // var respBody = new Buffer( )
  18. response.setStatusCode(200)
  19. response.setHeader('content-type', 'application/json')
  20. response.send(respBody)
  21. })
  22. };

Python 函数代码

使用 Python 编写代码可以参考文章 配置 HTTP 触发器的 Python 函数入口

  1. # -*- coding: utf-8 -*-
  2. import json
  3. HELLO_WORLD = b"Hello world!\n"
  4. def handler(environ, start_response):
  5. request_uri = environ['fc.request_uri']
  6. response_body = {
  7. 'uri':environ['fc.request_uri'],
  8. 'method':environ['REQUEST_METHOD']
  9. }
  10. # do something here
  11. status = '200 OK'
  12. response_headers = [('Content-type', 'text/json')]
  13. start_response(status, response_headers)
  14. # Python2
  15. return [json.dumps(response_body)]
  16. # Python3 tips: When using Python3, the str and bytes types cannot be mixed.
  17. # Use str.encode() to go from str to bytes
  18. # return [json.dumps(response_body).encode()]

Php 函数代码

使用 Php 编写代码可以参考文章 配置 HTTP 触发器的 Php 函数入口

  1. <?php
  2. use RingCentral\Psr7\Response;
  3. function handler($request, $context): Response{
  4. /*
  5. $body = $request->getBody()->getContents();
  6. $queries = $request->getQueryParams();
  7. $method = $request->getMethod();
  8. $headers = $request->getHeaders();
  9. $path = $request->getAttribute("path");
  10. $requestURI = $request->getAttribute("requestURI");
  11. $clientIP = $request->getAttribute("clientIP");
  12. */
  13. return new Response(
  14. 200,
  15. array(
  16. "custom_header1" => "v1",
  17. "custom_header2" => ["v2", "v3"],
  18. ),
  19. "hello world"
  20. );
  21. }

下一步

2. 域名解析