请求处理程序(Handler) 本文介绍如何使用Java请求处理程序响应接收到的事件并执行相应的业务逻辑。 请求处理程序 请求处理程序是您提供的一个方法。当您的函数被调用时,函数计算会运行该方法处理请求。 您可以通过函数计算控制台页面配置请求处理程序 ,对于Java语言的函数,请求处理程序需配置为 [包名].[类名]::[方法名]。例如,您的包名为example,类型为App,方法名为handleRequest,则请求处理程序可配置为 example.App::handleRequest。 处理程序接口 您在使用Java编程时,必须要实现函数计算提供的接口类,cruntimecore库为请求处理程序定义了以下接口。 StreamRequestHandler 以流的方式接收输入的事件请求对象并返回执行结果。您需要从输入流中读取调用函数时的输入,处理完成后把函数执行结果写到输出流中来返回。 PojoRequestHandler 以泛型的方式接收输入的事件请求对象并返回执行结果。您可以自定义输入和输出的类型,但是输入和输出的类型必须是POJO类型。 HttpRequestHandler 以标准的Servlet协议方式接收HTTP触发器 的请求并响应执行结果。请求会封装成 HttpServletRequest对象,并通过 HttpServletResponse对象来返回响应头和响应体。 示例:StreamRequestHandler 一个最简单的StreamRequestHandler示例如下所示: package example; import com.ctg.faas.runtime.; import example.util.ServletUtil; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; public class StreamHandler implements StreamRequestHandler { @Override public void handleRequest(InputStream input, OutputStream output, Context context) throws IOException { FunctionComputeLogger logger context.getLogger(); logger.info("StreamRequestHandler hello"); String inStr ServletUtil.getInputString(input); logger.info("input :"+inStr); String req String.format("input: %sn", inStr); output.write(req.getBytes()); output.flush(); output.close(); } } 包名和类名 包名和类名可以自定义。 实现的接口 您的代码中必须要实现函数计算预定义的接口。上述的代码示例中实现了 StreamRequestHandler,其中的input 参数为调用函数时传入的数据,output参数用于返回函数的执行结果。 Context参数 Context参数中包含一些函数的运行时信息(例如RequestId、临时AccessKey等),其类型是 com.ctg.faas.runtime.Context。 返回值 实现 StreamRequestHandler接口的函数通过output参数返回执行结果。 引入的依赖 其中用到的 com.ctg.faas.runtime包的maven依赖坐标如下: com.ctg.faas.runtime fcruntimecore 1.0.0SNAPSHOT