You can implement backend web services by writing SCF functions and providing services through API Gateway which will pass the request content as parameters to the function and return the result from the function back to the requester as the response.
Characteristics of API Gateway triggers:
event
input parameters, such as the specific service that receives the request, API rule, actual request path, method, and path
, header
, and query
of the request.API Gateway triggers can be configured in the SCF console or the API Gateway console.
When you configure the connection with SCF in API Gateway, you also need to configure the timeout period. The request timeout period in API Gateway and the execution timeout period in SCF take effect respectively. The timeout rules are as follows:
200 HTTP code
, but the returned content is the error message of SCF timeout.5xx HTTP code
, which indicates that the request timed out.In API Gateway, one API rule can be bound to only one function, but one function can be bound to multiple API rules as the backend. You can create an API with different paths in the API Gateway console and point the backend to the same function. APIs with the same path, same request method, and different release environments are regarded as the same API and cannot be bound repeatedly.
API Gateway triggers currently can only be bound to functions in the same region; for example, a function created in the Guangzhou region can only be bound to and triggered by API rules created in the Guangzhou region. If you want to trigger a function through API Gateway configuration in a specific region, please create a function in that region.
Request method is the method to process request sent from API Gateway to SCF, and response method is the method to process the returned value sent from SCF to API Gateway. Both request and response methods can be planned and implemented by means of passthrough and integration.
Integration request means that API Gateway converts the content of the HTTP request into request data structures which are passed to the function for handling as event
input parameters of the function. The following details the request data structures.
Passthrough request means that API Gateway passes the body
content of the HTTP request to the function as event
input parameters of the function. The passthrough request feature is still in the planning stage. For passthrough requests, the body
of the HTTP request must be in JSON data format.
Note:
- Currently, when an API Gateway trigger triggers a function, integration request is always used.
- When transferring images or files to SCF through API Gateway, you need to Base64-encode them. If the size of a Base64-encoded file is above 6 MB, we recommend you upload the file to COS through the client and pass the object address to SCF first. Then, SCF will pull the file from COS to complete the upload.
When an API Gateway trigger receives a request, it sends the event data to the bound function in JSON format as shown below:
{
"requestContext": {
"serviceId": "service-f94sy04v",
"path": "/test/{path}",
"httpMethod": "POST",
"requestId": "c6af9ac6-7b61-11e6-9a41-93e8deadbeef",
"identity": {
"secretId": "abdcdxxxxxxxsdfs"
},
"sourceIp": "10.0.2.14",
"stage": "release"
},
"headers": {
"Accept-Language": "en-US,en,cn",
"Accept": "text/html,application/xml,application/json",
"Host": "service-3ei3tii4-251000691.ap-guangzhou.apigateway.myqloud.com",
"User-Agent": "User Agent String"
},
"body": "{\"test\":\"body\"}",
"pathParameters": {
"path": "value"
},
"queryStringParameters": {
"foo": "bar"
},
"headerParameters":{
"Refer": "10.0.2.14"
},
"stageVariables": {
"stage": "release"
},
"path": "/test/value",
"queryString": {
"foo" : "bar",
"bob" : "alice"
},
"httpMethod": "POST"
}
The data structures are detailed as below:
Structure | Description |
---|---|
requestContext | Configuration information, request ID, authentication information, and source information of the API gateway where the request comes from.
|
path | Records the complete Path information of the actual request. |
httpMethod | Records the HTTP method of the actual request. |
queryString | Records the complete Query content of the actual request. |
body | Records the content of the actual request after being converted into a String . |
headers | Records the complete Header content of the actual request. |
pathParameters | Records the Path parameters configured in API Gateway and their actual values. |
queryStringParameters | Records the Query parameters configured in API Gateway and their actual values. |
headerParameters | Records the Header parameters configured in API Gateway and their actual values. |
Note:
- The content of
requestContext
may be increased during API Gateway iteration. At present, it is guaranteed that the content of the data structure will only be increased but not reduced, so that the existing structure will not be compromised.- Parameters in the actual request may appear in multiple locations and can be selected based on your business needs.
Integration response means that API Gateway parses the returned content of the function and constructs an HTTP response based on the parsed content. With the aid of integration response, you can control the status code, headers, and body content of the response by using code, and implement the response in a custom format, such as XML, HTML, JSON, and even JS. When using integration response, data structures need to be returned based on the rules of integration response for API Gateway trigger before they can be successfully parsed by API Gateway; otherwise, error message {"errno":403,"error":"Invalid scf response format. please check your scf response format."}
will appear.
Passthrough response means that API Gateway directly passes the returned content of the function to the API requester. Generally, the data format of this type of responses is fixed at JSON format, the status code is defined according to the status of function execution, and status code 200 is returned if the function is successfully executed. With passthrough response, you can get the JSON format and parse the structures at the call location to get the content in the structures.
Note:
- If the API Gateway trigger is configured in the API Gateway console, the way to handle the response is passthrough response by default. To enable integration response, select Enable integration response at the backend configuration location in the API configuration and return the content in the data structures detailed below in the code.
- If the API Gateway trigger is configured in the SCF console, the integration response feature is enabled by default. Please pay attention to the format of the returned data.
If integration response is set for API Gateway, data structures similar to the content below need to be returned:
{
"isBase64Encoded": false,
"statusCode": 200,
"headers": {"Content-Type":"text/html"},
"body": "<html><body><h1>Heading</h1><p>Paragraph.</p></body></html>"
}
The data structures are detailed as below:
Structure | Description |
---|---|
isBase64Encoded | This indicates whether the content in the body is Base64-encoded binary. It should be true or false in JSON format. |
statusCode | HTTP return code, which should be an integer value. |
headers | HTTP return header, which should contain multiple key-value or key:[value,value] objects. Both key and value should be strings. |
body | HTTP return body. |
If you need to return multiple headers with the same key, you can use a string array to describe different values; for example:
{
"isBase64Encoded": false,
"statusCode": 200,
"headers": {"Content-Type":"text/html","Key":["value1","value2","value3"]},
"body": "<html><body><h1>Heading</h1><p>Paragraph.</p></body></html>"
}
Was this page helpful?