云服务器内容精选

  • 响应示例 状态码: 201 Created { "auths" : [ { "api_id" : "5f918d104dc84480a75166ba99efff21", "auth_result" : { "status" : "SUC CES S" }, "auth_time" : "22020-08-04T04:02:22.482227344Z", "id" : "dd29b33ae4394e3b924b582c6b40880b", "app_id" : "356de8eb7a8742168586e5daf5339965", "auth_role" : "PROVIDER", "auth_tunnel" : "NORMAL" } ] } 状态码: 400 Bad Request { "error_code" : "APIG.2011", "error_msg" : "Invalid parameter value,parameterName:api_ids. Please refer to the support documentation" } 状态码: 401 Unauthorized { "error_code" : "APIG.1002", "error_msg" : "Incorrect token or token resolution failed" } 状态码: 403 Forbidden { "error_code" : "APIG.1005", "error_msg" : "No permissions to request this method" } 状态码: 404 Not Found { "error_code" : "APIG.3004", "error_msg" : "App 356de8eb7a8742168586e5daf5339965 does not exist" } 状态码: 500 Internal Server Error { "error_code" : "APIG.9999", "error_msg" : "System error" }
  • 响应参数 状态码: 201 表4 响应Body参数 参数 参数类型 描述 auths Array of ApiAuthRelations objects API与APP的授权关系列表 表5 ApiAuthRelations 参数 参数类型 描述 api_id String API编号 auth_result AuthResult object 授权结果 auth_time String 授权时间 id String 授权关系编号 app_id String APP编号 auth_role String 授权者 PROVIDER:API提供者授权 CONSUMER:API消费者授权 枚举值: PROVIDER CONSUMER auth_tunnel String 授权通道类型 NORMAL:普通通道 GREEN:绿色通道 暂不支持,默认NORMAL 枚举值: NORMAL GREEN auth_whitelist Array of strings 绿色通道的白名单配置 auth_blacklist Array of strings 绿色通道的黑名单配置 visit_params String 访问参数。 表6 AuthResult 参数 参数类型 描述 status String 授权结果 SUCCESS:授权成功 SKIPPED:跳过 FAILED:授权失败 枚举值: SUCCESS SKIPPED FAILED error_msg String 授权失败错误信息 error_code String 授权失败错误码 api_name String 授权失败的API名称 app_name String 授权失败的APP名称 状态码: 400 表7 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述 状态码: 401 表8 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述 状态码: 403 表9 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述 状态码: 404 表10 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述 状态码: 500 表11 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 用户Token。通过调用 IAM 服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。 表3 请求Body参数 参数 是否必选 参数类型 描述 env_id 是 String 需要授权的环境编号 app_ids 是 Array of strings APP的编号列表 api_ids 是 Array of strings API的编号列表,可以选择租户自己的API,也可以选择从云商店上购买的API。
  • 概述 欢迎使用API网关(API Gateway),API网关为您提供高性能、高可用、高安全的API托管服务,帮助您轻松构建、管理和部署任意规模的API。 您可以使用本文档提供的API对API网关进行相关操作,如创建、删除、修改等。支持的全部操作请参见API概览。 在调用API网关的API前,请确保已经充分了解API网关相关概念,详细信息请参见产品介绍。 专享版开放V2版本的接口,共享版开放V1.0版本的接口。共享版已下线,建议用户使用新版(专享版)管理您的API。 父主题: 使用前必读
  • 请求消息头 附加请求头字段,如指定的URI和HTTP方法所要求的字段。例如定义消息体类型的请求头“Content-Type”,请求鉴权信息等。 如下公共消息头需要添加到请求中。 Content-Type:消息体的类型(格式),必选,默认取值为“application/json”,有其他取值时会在具体接口中专门说明。 X-Auth-Token:用户Token,可选,当使用Token方式认证时,必须填充该字段。通过用户Token调用获取用户Token接口的响应Header参数。 API同时支持使用AK/SK认证,AK/SK认证是使用SDK对请求进行签名,签名过程会自动往请求中添加Authorization(签名认证信息)和X-Sdk-Date(请求发送的时间)请求头。 AK/SK认证的详细说明请参见AK/SK认证。 对于获取用户Token接口,由于不需要认证,所以只添加“Content-Type”即可,添加消息头后的请求如下所示。 POST https://iam.cn-north-1.myhuaweicloud.com/v3/auth/tokens Content-Type: application/json
  • 请求方法 HTTP请求方法(也称为操作或动词),它告诉服务你正在请求什么类型的操作。 GET:请求服务器返回指定资源。 PUT:请求服务器更新指定资源。 POST:请求服务器新增资源或执行特殊操作。 DELETE:请求服务器删除指定资源,如删除对象等。 HEAD:请求服务器资源头部。 PATCH:请求服务器更新资源的部分内容。当资源不存在的时候,PATCH可能会去创建一个新的资源。 在创建API分组的URI部分,您可以看到其请求方法为“POST”,则其请求为: POST https://apig.cn-north-1.myhuaweicloud.com/v2/{project_id}/apigw/instances/{instance_id}/api-groups
  • 请求消息体 请求消息体通常以结构化格式发出,与请求消息头中Content-type对应,传递除请求消息头之外的内容。如果请求消息体中参数支持中文,那么中文字符必须为UTF-8编码。 每个接口的请求消息体内容不同,也并不是每个接口都需要有请求消息体(或者说消息体为空),GET、DELETE操作类型的接口不需要消息体,消息体具体内容需要根据具体接口而定。 对于创建API分组接口,您可以从接口的请求部分看到所需的请求参数及参数说明。将消息体加入后的请求如下所示,加粗的斜体字段需要根据实际值填写,其中name为API分组的名称,remark为API分组描述。 POST https://apig.cn-north-1.myhuaweicloud.com/v2/{project_id}/apigw/instances/{instance_id}/api-groups Content-Type: application/json X-Auth-Token: xxxx { "name": "APIGroup_test", "remark": "api group remark" } 到这里为止这个请求需要的内容就具备齐全了,您可以使用curl、Postman或直接编写代码等方式发送请求调用API。
  • 请求URI 请求URI由如下部分组成。 {URI-scheme} :// {Endpoint} / {resource-path} ? {query-string} 尽管请求URI包含在请求消息头中,但大多数语言或框架都要求您从请求消息中单独传递它,所以在此单独强调。 表1 URI中的参数说明 参数 描述 URI-scheme 表示用于传输请求的协议,当前所有API均采用HTTPS协议。 Endpoint 指定承载REST服务端点的服务器 域名 或IP,不同服务不同区域的Endpoint不同,您可以从终端节点中获取。 例如APIG服务在“华北-北京一”区域的Endpoint为“apig.cn-north-1.myhuaweicloud.com”。 resource-path 资源路径,也即API访问路径。从具体API的URI模块获取,例如“创建API分组(专享版API)”API的resource-path为“/v2/{project_id}/apigw/instances/{instance_id}/api-groups”,project_id为项目ID,instance_id为实例ID(在APIG控制台的“实例信息”中查看)。 query-string 查询参数,是可选部分,并不是每个API都有查询参数。查询参数前面需要带一个“?”,形式为“参数名=参数取值”,例如“limit=10”,表示查询最多10条数据。多个查询参数之间使用“&”隔开。 例如您需要在“华北-北京一”区域创建API分组,将URI中的参数拼接起来即可。 https://apig.cn-north-1.myhuaweicloud.com/v2/{project_id}/apigw/instances/{instance_id}/api-groups 为查看方便,在每个具体API的URI部分,只给出resource-path部分,并将请求方法写在一起。这是因为URI-scheme都是HTTPS,同一个服务的Endpoint在同一个区域也相同,所以简洁起见将这两部分省略。
  • 响应消息体 响应消息体通常以结构化格式返回,与响应消息头中Content-type对应,传递除响应消息头之外的内容。 对于创建API分组接口,返回如下消息体。为篇幅起见,这里只展示部分内容。 { "id": "41e08fbaca9f4d64bde467d0dd89ff51", "name": "aaa", "status": 1, "sl_domain": "41e08fbaca9f4d64bde467d0dd89ff51.example.cloudapis.com", "register_time": "2024-05-23T08:03:56.419897855Z", "update_time": "2024-05-23T08:03:56.419897962Z", "on_sell_status": 2, "url_domains": [], "sl_domain_access_enabled": true, "sl_domains": [ "41e08fbaca9f4d64bde467d0dd89ff51.example.cloudapis.com" ], "remark": "", "call_limits": 0, "time_interval": 0, "time_unit": "", "is_default": 2, "version": "", } 当接口调用出错时,会返回错误码及错误信息说明,错误响应的Body体格式如下所示。 { "error_msg": "The token is missing.", "error_code": "APIG.1000" } 其中,error_code表示错误码,error_msg表示错误描述信息。
  • Token认证 Token的有效期为24小时,需要使用一个Token鉴权时,可以先缓存起来,避免频繁调用。 Token在计算机系统中代表令牌(临时)的意思,拥有Token就代表拥有某种权限。Token认证就是在调用API的时候将Token加到请求消息头,从而通过身份认证,获得操作API的权限。 在构造请求中以调用创建API分组(专享版API)接口为例说明了如何调用API。 获取Token 后,再调用其他接口时,您需要在请求消息头中添加“X-Auth-Token”,其值即为Token。例如Token值为“ABCDEFJ....”,则调用接口时将“X-Auth-Token: ABCDEFJ....”加到请求消息头即可,如下所示。 POST https://apig.cn-north-1.myhuaweicloud.com/v2/{project_id}/apigw/instances/{instance_id}/api-groups Content-Type: application/json X-Auth-Token: ABCDEFJ....
  • AK/SK认证 AK/SK签名认证方式仅支持消息体大小12MB以内,12MB以上的请求请使用Token认证。 通过AK/SK获取的Token有效期最短为15分钟。 AK/SK认证就是使用AK/SK对请求进行签名,在请求时将签名信息添加到消息头,从而通过身份认证。 AK(Access Key ID):访问密钥ID。与私有访问密钥关联的唯一标识符;访问密钥ID和私有访问密钥一起使用,对请求进行加密签名。 SK(Secret Access Key):与访问密钥ID结合使用的密钥,对请求进行加密签名,可标识发送方,并防止请求被修改。 使用AK/SK认证时,您可以基于签名算法使用AK/SK对请求进行签名,也可以使用专门的签名SDK对请求进行签名。详细的签名方法和SDK使用方法请参见API签名指南。 签名SDK只提供签名功能,与服务提供的SDK不同,使用时请注意。 客户端必须注意本地时间与时钟服务器的同步,避免请求消息头X-Sdk-Date的值出现较大误差。 API网关除了校验时间格式外,还会校验该时间值与网关收到请求的时间差,如果时间差大于15分钟,API网关将拒绝请求。
  • 专享版API概览 API网关专享版接口的分类与说明如表1所示。 表1 专享版API概览 类型 说明 API分组管理 包括API分组的创建、修改、删除、查询详情和列表等接口。 环境管理 包括环境的创建、修改、删除和查询列表等接口。 环境变量管理 包括环境变量的新建、修改、删除、查询详情和列表等接口。 流控策略管理 包括流控策略的创建、修改、删除、查看详情和列表等接口。 API管理 包括API的创建、修改、删除、发布或下线、查询、调试、切换版本、校验API定义等接口。 签名密钥管理 包括签名密钥的创建、修改、删除和查询等接口。 签名密钥绑定关系管理 包括签名密钥的绑定、解绑、查询API绑定的密钥列表、查看密钥绑定/未绑定的API列表。 API绑定流控策略 包括绑定、解绑、批量解绑API与流控策略的关系,查看流程策略绑定/未绑定的API列表,查看API绑定的流控策略列表。 设置特殊流控 包括创建、修改、删除特殊流控策略,查看特殊设置列表。 APP授权管理 包括APP授权、解除授权,查看APP已绑定/未绑定的API列表,查看API已绑定的APP列表。 概要查询 包括查询API概况、API分组概况、APP概况。 域名管理 包括域名的绑定、修改、解绑。域名证书的绑定、删除、查看。 ACL策略管理 包括ACL策略的创建、修改、删除、批量删除,查看ACL策略详情、查询ACL策略列表。 API绑定ACL策略 包括将API与ACL策略绑定、解绑、批量解绑,查看ACL策略绑定/未绑定的API列表,查看API绑定的ACL策略列表。 自定义认证管理 包括自定义认证的创建、修改、删除,查看自定义认证详情,查询自定义认证列表。 OpenAPI接口 包括API的导出、导入。 VPC通道管理 包括: VPC通道的创建、更新、删除、查看,查询VPC通道列表。 后端实例的添加、查看、删除。 后端服务器状态的批量修改。 VPC通过健康检查的修改。 后端服务器组的添加、更新、删除、查看,查询VPC通道后端服务器组列表。 监控信息查询 包括查询最近一段时间的API统计信息,查询最近一小时内的分组统计信息。 分组自定义响应管理 包括分组自定义响应的创建、查询、修改、删除,查询分组自定义响应列表,查看、修改分组下指定错误类型的自定义响应,删除分组指定错误类型的自定义响应配置。 标签管理 包括标签列表的查询。 实例特性管理 包括实例特性的配置,查看实例特性列表。 配置管理 包括查看某实例的租户配置列表,查询租户实例配置列表。 实例管理 包括: 实例的创建、更新、查看、删除,查看实例创建进度,查询实例列表。 EIP的绑定、解绑。 实例公网出口的开启、关闭,更新实例公网出口带宽。 查看可用区信息。 实例的规格变更。 查看实例约束信息。 实例终端节点管理 包括: 查询实例终端节点连接列表。 查询实例终端节点服务的白名单列表。 接受/拒绝终端节点连接。 批量添加/删除实例终端节点白名单。 实例标签管理 包括实例标签的添加、删除和查询。 微服务中心管理 包括导入微服务。 SSL证书管理 包括: 证书的创建、删除、修改、查看,获取SSL证书列表。 域名绑定/解绑SSL证书。 SSL证书绑定/解绑域名 获取SSL证书已绑定的域名列表。 插件管理 包括: 插件的创建、修改、删除、查看,查询插件列表。 插件绑定/解绑API。 API绑定/解绑插件。 查询插件/API下绑定的API/插件。 查询可绑定当前插件的API,查询可绑定当前API的插件。 APP管理 包括: APP的创建、修改、删除、校验,重置密钥,查看APP详情、查询APP列表。 APP Code的创建、自动生成、删除,查看APP Code详情、查询APP Code列表。 查询凭据关联的凭据配额。 设置/删除APP的访问控制,查看APP的访问控制详情。 凭据配额管理 包括: 凭据配额的创建、修改、删除。 获取凭据配额详情和凭据配额列表。 凭据配额绑定/解绑凭据列表 。 查询凭据配额已绑定的凭据和未绑定的凭据。 异步任务管理 包括: API的异步导入/导出。 获取异步任务结果。 父主题: API概览
  • 应用场景 gRPC是RPC(远程过程调用)的一种,只需定义每个API的Request和Response,剩下的gRPC框架就可以完成。它的典型特征就是使用protobuf(protocol buffers)作为其接口定义语言(Interface Definition Language,缩写IDL),同时底层的消息交换格式也是使用protobuf。 当用户使用gRPC服务时,可以通过API网关创建API,实现gRPC服务的路由转发。
  • 设置错误响应 调用API如果输入错误的认证信息,则返回结果如下: 1 {"error_msg":"Incorrect authentication information: frontend authorizer","error_code":"APIG.0305","request_id":"36e42b3019077c2b720b6fc847733ce9"} 为了让API响应结果为函数中返回的context中的字段(如果您使用的是专享版网关,并且实例支持authorizer_context_support_num_bool特性,那么context中的value的类型可以为boolean类型或number类型),需要修改网关响应模板。在API所在的分组中,“分组信息”页签下的“网关响应”区域,编辑自定义认证失败的响应详情,将响应状态码改为401,将消息模板改为(引用变量为boolean类型或number类型时,变量不需要加双引号): 1 {"code":"$context.authorizer.frontend.code","message":"$context.authorizer.frontend.message", "authorizer_success": "$context.authorizer.frontend.authorizer_success"} 2 修改之后,调用API传入错误的认证信息,返回状态码为401,返回结果如下: 1 {"code":"1001","message":"incorrect username or password","authorizer_success": "false"}
  • 编写自定义认证函数 在 函数工作流 的控制台编写函数,自定义认证的代码编写指南参见创建用于前端自定义认证的函数。 在函数工作流页面创建一个函数,语言选Python 3.6。 表1 函数信息配置 参数 配置说明 函数类型 默认“事件函数”。 区域 与API网关相同区域。 函数名称 根据规划自定义名称。建议您按照一定的命名规则填写名称,方便您快速识别和查找。 委托名称 用户委托函数工作流去访问其他的云服务。此处选择“未使用任何委托”。 企业项目 默认“default”。 运行时 选择Python 3.6。 在“代码”页签,将以下代码复制到index.py中(如果您使用的是专享版网关,并且实例支持authorizer_context_support_num_bool特性,那么context中的value的类型可以为boolean类型或number类型)。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 # -*- coding:utf-8 -*- import json def handler(event, context): #以下表示认证信息匹配正确,则返回用户名, if event["headers"]["authorization"]=='Basic dXN****cmQ=': return { 'statusCode': 200, 'body': json.dumps({ "status":"allow", "context":{ "user_name":"user1" } }) } else: return { 'statusCode': 200, 'body': json.dumps({ "status":"deny", "context":{ "code": "1001", "message":"incorrect username or password", "authorizer_success": "false" } }) }