请求处理程序(Handler) 本文介绍如何使用Python请求处理程序响应接收到的事件并执行相应的业务逻辑。 请求处理程序 请求处理程序 是您提供的一个方法。当您的函数被调用时,函数计算会运行该方法处理请求。 您可以通过函数计算控制台页面 配置请求处理程序 ,对于Python语言的函数,请求处理程序需配置为 [文件名].[方法名]。例如,您的文件名为index.py,方法名为handler,则请求处理程序可配置为 index.handler。 事件请求处理程序的方法签名定义如下: def handler(event, context): return 'Hello Python!' 方法名 您可以自定义方法名称。 event入参 您调用函数时传入的参数。 context入参 context参数中包含一些函数的运行时信息(例如RequestId、临时AccessKey等)。 HTTP请求处理程序的方法签名定义如下: coding: utf8 HELLOWORLD b'Hello world!n' def handler(environ, startresponse): status '200 OK' responseheaders [('Contenttype', 'text/plain')] startresponse(status, responseheaders) return [HELLOWORLD] 方法名 您可以自定义方法名称。 environ入参 用于存放所有HTTP请求的信息。 startresponse入参 发送 HTTP 响应的函数,包含两个参数:HTTP状态码、一组Python list对象组成的HTTP Headers。 示例:获取JSON中的字段 coding: utf8 import json def handler(event, context): person json.loads(event) name person["name"] address person["address"] return f"Input name is: {name}, address is: {address}" 示例二:使用HTTP触发器调用函数 import json import logging 配置日志 logger logging.getLogger() logger.setLevel(logging.INFO) def handler(environ, startresponse): 获取请求路径、URI和客户端IP requestpath environ.get('FCREQUESTPATH', '') requesturi environ.get('FCREQUESTURI', '') requestclientip environ.get('FCREQUESTCLIENTIP', '') 记录日志 logger.info("hello") print("print hello") 获取请求体数据 try: 读取请求体 requestbodysize int(environ.get('CONTENTLENGTH', 0)) except (ValueError): requestbodysize 0 requestbody environ['wsgi.input'].read(requestbodysize) 解析JSON请求体 try: if requestbody: jsondata json.loads(requestbody.decode('utf8')) logger.info(f"body: {json.dumps(jsondata)}") else: jsondata {} logger.info("body: empty") except json.JSONDecodeError as e: logger.error(f"JSON解析错误: {e}") jsondata {} 构建响应内容 responsecontent f"Path: {requestpath}nUri: {requesturi}nIP: {requestclientip}n" 设置响应状态和头部 status '200 OK' responseheaders [ ('header1', 'value1'), ('header2', 'value2'), ('ContentType', 'text/plain') ] startresponse(status, responseheaders) 返回响应内容 return [responsecontent.encode('utf8')]