11.4.5. Quarkus 功能返回值

功能可以从允许类型列表中返回任何类型的实例。另外,他们可以返回 Uni<T> 类型,其中 <T> 类型参数可以是允许的类型的任何类型。

如果函数调用异步 API,因为返回的对象以与接收对象相同的格式序列化,Uni<T> 类型很有用。例如:

  • 如果函数收到 HTTP 请求,则返回的对象将在 HTTP 响应的正文中发送。
  • 如果函数通过二进制编码收到 CloudEvent 对象,则返回的对象将在二进制编码的 CloudEvent 对象的 data 属性中发送。

以下示例显示了获取购买列表的功能:

示例命令

public class Functions {
    @Funq
    public List<Purchase> getPurchasesByName(String name) {
      // logic to retrieve purchases
    }
}

  • 通过 HTTP 请求调用此功能将生成 HTTP 响应,其中包含响应正文中的订购列表。
  • 通过传入的 CloudEvent 对象调用此功能可生成 CloudEvent 响应,并在 data 属性中包括一个订购列表。

11.4.5.1. 允许的类型

功能的输入和输出可以是 voidString、或 byte[] 类型。此外,它们也可以是原语类型及其打包程序,例如 intInteger。它们也可以是以下复杂的对象:Javabeans、映射、列表、数组和特殊的 CloudEvents<T> 类型。

映射、列出、数组、CloudEvents<T> 类型的 <T> 类型参数以及 Javabeans 的属性只能是此处列出的类型。

示例

public class Functions {
    public List<Integer> getIds();
    public Purchase[] getPurchasesByName(String name);
    public String getNameById(int id);
    public Map<String,Integer> getNameIdMapping();
    public void processImage(byte[] img);
}