云函数 常见示例(Java)

通过使用 POJO 类型参数,可以以处理除简单事件入参外更复杂的数据结构。在这篇档中,将使用一组示例说明在 SCF 中如何使用 POJO 参数,并能支持何种格式的入参。

相关产品
云函数 产品页,含版本规格、价格与购买入口。

一、前提条件

已登录 Serverless 控制台。

二、事件入参和 POJO

这篇使用的事件入参如下所示:

{ "person": {"firstName":"bob","lastName":"zou"}, "city": {"name":"shenzhen"}}

在有如上入参的情况下,输出内容如下:

{ "greetings": "Hello bob zou.You are from shenzhen"}

根据入参,构建了如下四个类:

·RequestClass:用于接受事件,作为接受事件的类。

·PersonClass:用于处理事件 JSON 内 person 段。

·CityClass:用于处理事件 JSON 内 city 段。

·ResponseClass:用于组装响应内容。

三、代码准备

根据入参已构建的四个类及入口函数,请按照以下步骤进行代码准备。

四、步骤1:项目目录准备

创建项目根目录,例如 scf_example。

五、步骤2:代码目录准备

1. 在项目根目录下创建文件夹 src\\main\\java 作为代码目录。

2. 根据准备使用的包名,在代码目录下创建包文件夹。
例如 example,形成 scf_example\\src\\main\\java\\example 的目录结构。

六、步骤3:代码准备

在 example 文件夹内创建 Pojo.java,RequestClass.java,PersonClass.java,CityClass.java,ResponseClass.java 文件,文件内容分别如下:

Pojo.javaRequestClass.javaPersonClass.javaCityClass.javaResponseClass.javapackage example;public class Pojo{ public ResponseClass handle(RequestClass request){ String greetingString = String.format("Hello %s %s.You are from %s", request.person.firstName, request.person.lastName, request.city.name); return new ResponseClass(greetingString); }}package example;public class RequestClass { PersonClass person; CityClass city; public PersonClass getPerson() { return person; } public void setPerson(PersonClass person) { this.person = person; } public CityClass getCity() { return city; } public void setCity(CityClass city) { this.city = city; } public RequestClass(PersonClass person, CityClass city) { this.person = person; this.city = city; } public RequestClass() { }}package example;public class PersonClass { String firstName; String lastName; public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } public PersonClass(String firstName, String lastName) { this.firstName = firstName; this.lastName = lastName; } public PersonClass() { }}package example;public class CityClass { String name; public String getName() { return name; } public void setName(String name) { this.name = name; } public CityClass(String name) { this.name = name; } public CityClass() { }}package example;public class ResponseClass { String greetings; public String getGreetings() { return greetings; } public void setGreetings(String greetings) { this.greetings = greetings; } public ResponseClass(String greetings) { this.greetings = greetings; } public ResponseClass() { }}

七、代码编译

注意:说明:

注意:本示例使用 Maven 进行编译打包,你可以根据自身情况,选择使用打包方法。

1. 在项目根目录创建 pom.xml 函数,并输入如下内容:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>examples</groupId> <artifactId>java-example</artifactId> <packaging>jar</packaging> <version>1.0-SNAPSHOT</version> <name>java-example</name> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>2.3</version> <configuration> <createDependencyReducedPom>false</createDependencyReducedPom> </configuration> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> </execution> </executions> </plugin> </plugins> </build></project>

2. 在命令行内执行命令 mvn package ,确保有编译成功字样,输出结果如下则说明成功打包。

[INFO] ————————————————————————[INFO] BUILD SUCCESS[INFO] ————————————————————————[INFO] Total time: 1.800 s[INFO] Finished at: 2017-08-25T15:42:41+08:00[INFO] Final Memory: 18M/309M[INFO] ————————————————————————

如果编译失败,请根据提示进行相应修改。

3. 编译后的生成包位于 target\\java-example-1.0-SNAPSHOT.jar。

八、SCF 云函数创建及测试

1. 创建云函数,详情请参见 创建及更新函数。

2. 使用编译后的包作为提交包上传。你可以自行选择使用 zip 上传,或先上传至 COS Bucket 后再通过选择 COS Bucket 上传来提交。

3. 设置云函数的执行方法为 example.Pojo::handle。

4. 在函数代码页的测试事件模板内输入期望能处理的入参:

{ "person": {"firstName":"bob","lastName":"zou"}, "city": {"name":"shenzhen"}}

单击运行后,可查看返回内容为:

{ "greetings": "Hello bob zou.You are from shenzhen"}

你也可以自行修改测试入参内结构的 value 内容,运行后可以看到修改效果。

九、相关示例

你可前往 scf-demo-java,拉取示例代码并进行测试。

赞 (0)
上一篇 4天前
下一篇 4天前