函数 URL 概述

最近更新时间:2023-10-13 15:21:21

我的收藏

简介

函数 URL 是函数的专用 HTTP(S) 端点。为函数配置函数 URL 后,可以通过 Web 浏览器、curl、Postman 或任何 HTTP 客户端通过其 HTTP(S) 端点调用函数。
您可以通过 SCF 控制台或 SCF API/CLI 创建和配置函数 URL。创建函数 URL 后,其 URL 端点将永久不变。函数 URL 的端点格式如下:
公网: https://<app-id>-<url-id>-<region>.scf.tencentcs.com
内网: https://<app-id>-<url-id>-<region>-in.scf.tencentcs.com
函数 URL 和触发器同级存在,适用于事件函数和 Web 函数。您可以在启用函数 URL 的同时配置 API 网关等触发器。
函数 URL 和函数的版本、别名一对一绑定,您需要手动为每个版本和别名开启或关闭函数 URL。默认情况下,函数 URL 是关闭的。
说明:
如需生成 WSS 地址,请在函数配置中启用 WebSocket 支持。

调用参数

事件函数

请求参数

URL 在接受到请求后,函数将会被触发运行,同时 URL 会将请求的相关信息以 event 入参的形式发送给被触发的函数。请求的相关信息包含了例如具体接受到请求的服务和 API 规则、请求的实际路径、方法、请求的 path、headers、query 等内容:
// Event 详细信息示例【兼容apigw协议,去掉headerParameters、isBase64Encoded、pathParameters、queryStringParameters、requestContext 相关字段】:
{
"body":"{\\"test\\":\\"hello world\\"}",
"headers":{
"accept":"*/*",
"accept-encoding":"gzip, deflate, br",
"cache-control":"no-cache",
"connection":"keep-alive",
"content-length":"17"
},
"httpMethod":"POST",
"path":"/",
"queryString":{
"a":"1",
"b":"2"
}
}

响应参数

当函数返回响应时,函数会解析响应并将其转换为 HTTP 响应,标准响应负载:
{
"statusCode": 201,
"headers": {
"Content-Type": "application/json",
"My-Custom-Header": "Custom Value"
},
"body": "{ \\"message\\": \\"Hello, world!\\" }"
}
函数会为您推断响应格式。如果您的函数返回有效的 JSON 并且没有返回 statusCode,函数会假设 statusCode 为200,content-type 为 application/json,body 是函数响应。
函数响应标准响应参数格式如下:
函数输出
HTTP 响应(客户端看到的内容)
"Hello, world!"
HTTP/2 200
date: Wed, 08 Sep 2021 18:02:24 GMT
content-type: application/json
content-length: 15

"Hello, world!"
{
"message": "Hello, world!"
}
HTTP/2 200
date: Wed, 08 Sep 2021 18:02:24 GMT
content-type: application/json
content-length: 34

{
"message": "Hello, world!"
}
{
"statusCode": 201,
"headers": {
"Content-Type": "application/json",
"My-Custom-Header": "Custom Value"
},
"body": JSON.stringify({
"message": "Hello, world!"
})
}
HTTP/2 201
date: Wed, 08 Sep 2021 18:02:24 GMT
content-type: application/json
content-length: 27
my-custom-header: Custom Value

{
"message": "Hello, world!"
}

Web 函数

URL 在接受到 HTTP 请求后,该函数将会被触发运行,此时 URL 会将 HTTP 请求直接透转,不再做 event 类型格式转换,同时请求响应也直接透转。