上云无忧 > 文档中心 > 百度智能云API网关使用教程 - 后端使用函数计算
百度智能云API网关使用教程 - 后端使用函数计算

文档简介:
介绍: 函数计算CFC(Cloud Function Compute)提供基于事件触发、全托管的云端计算能力。由于其“无服务器”特性,您仅需要开发业务代码并上传,无需关注和配置服务器资源。 使用API网关,您可直接将函数计算作为您的后端,在无需关注后端服务资源的同时,使用API网关的流控、认证、访问控制等API管理能力。
*此产品及展示信息均由百度智能云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

介绍

函数计算CFC(Cloud Function Compute)提供基于事件触发、全托管的云端计算能力。由于其“无服务器”特性,您仅需要开发业务代码并上传,无需关注和配置服务器资源。 使用API网关,您可直接将函数计算作为您的后端,在无需关注后端服务资源的同时,使用API网关的流控、认证、访问控制等API管理能力。

配置方式

函数计算配置

API网关使用函数计算作为后端时,API网关收到客户端的http/https请求后,会将请求信息封装成符合函数计算输入的event格式。网关调用CFC时函数接受到的event格式(适用于js/python)如下:

{ "path": "HTTP请求的路径", "httpMethod": "HTTp请求的方法", "headers": {请求头}, "queryStringParameters":
 {query string 参数}, "pathParameters": {代理路径参数}"requestContext": {请求上下文}, "body": "请求体", 
"isBase64Encoded": "请求体是否为Base64编码" }

注意:API网关接入时,event定义中的path与CFC http触发器的event定义略有不同。API网关接入时,包含resource字段表示在API网关中定义的请求路径,pathParameters表示匹配到的路径参数,而path表示的为函数计算本身的请求路径。

函数计算处理事件后,需要将计算结果封装成固定格式,以便于API网关使用这些信息构造成http response。网关调用CFC时函数需要的返回格式(适用于js/python)如下:

{ "isBase64Encoded": true|false, "statusCode": httpStatusCode, "headers": { "headerName": "headerValue", ... }, "body": "..." }

JAVA情况下,函数的输入为InputStream,输出为OutputStream。InputStream转为Json后的格式与event格式一致,返回的结果通过UTF-8编码后写到OutputStream中即可。

网关配置

基本的API配置方法请参考API开放指南。

在配置API后端时,后端服务类型选择『函数计算』,如下图。

选择函数计算后,在后端服务地址中输入函数的BRN,其他配置与普通后端的配置方法一致,如下图。

函数的BRN可通过如下步骤获取。

点击『查看函数计算列表』。

点击具体函数进入函数详情。

选择版本后,在BRN一栏点击『复制』按钮复制函数BRN。

Body传递规则

网关到函数

网关需要将客户端请求中的body封装到为json格式的入参event中的"body"字段,对于不同的body格式,处理方式不同。如果客户端到网关的body为key-value形式的请求,body将直接处理为json;对body为text形式的请求,网关发往后端为string;对于发往后端为包含文件等二进制的情况,则经过Base64编码后以字符串形式放到event的body字段。具体处理如下:

按Json处理
  • application/json
  • application/x-www-form-urlencoded
按字符串处理
  • text/*
  • application/xml
  • application/rss+xml
  • application/problem+xml
  • application/atom+xml
按二进制处理(经过Base64Encode)
  • multipart/form-data
  • 其他所有情况

函数到网关

函数返回跟业务需求选择是否进行Base64编码,并在isBase64Encoded说明body是否经过编码。如果函数返回的body经过Base64编码,则网关会进行Base64解码后再讲body返回给API用户。

注意:如果返回给网关的Header未给定Conten-Type,则网关返回给用户时默认使用application/json;charset=UTF-8。

测试方式

特别的需要注意以下几点:

  • 函数的调用是否正常
  • 发往函数的event中path/query/header/body的内容是否正确
  • 有参数映射的情况下发往函数的请求映射是否正确
  • 返回的header是否符合预期
  • 不同content-type对编码的处理是否正确
  • 对函数返回的body进行编码,确认网关层面是否有对body做解码操作
相似文档
  • 介绍: API网关支持以私有网络(VPC)中的服务为后端,通过API的形式快速对外开放。API网关通过内部网络与VPC后端进行通信,最大程度保障后端服务的安全。
  • 为保证后端收到的请求来源可靠,网关提供后端密钥签名验证功能,创建密钥并将密钥绑定到具体的API上即可开启后端签名。 开启后端密钥后,网关会在请求后端时增加具体的签名验证信息,然后后端在本地也进行相应的签名计算并与网关的签名信息进行比较。 后端密钥通过自定义的key和secret做签名计算,有关签名生成算法的具体介绍,请参看鉴权认证机制。
  • API网关支持API的导入导出,导出功能目前只支持API网关自定义的yaml格式导出,导入功能支持API网关自定义的yaml格式导入和swagger格式的导入。 下面针对API网关的导入导出功能进行说明。
  • API的调用是通过授权给APP的方式,每个APP有AK、SK的信息,用于在API请求时做签名校验。 可以通过在网关控制台应用管理页面创建APP。 每个APP在创建后,会分配对应的AK、SK信息,您请求时需要携带签名信息,网关会通过签名信息对您做身份验证。 如果AK、SK信息丢失,SK可以在控制台进行重置操作,以防止API被其他人调用。
  • 授权是指授予某个APP调用某个API的权限,APP在获得API的授权之后才能调用API。 另一种是来自云市场的APP,会有唯一的appCode信息,通过appCode信息在用户已经购买API的情况下,可以直接调用API。 获取API的方式不同,授权的方式也不同。
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部