管理中心
我的

调用函数

查询触发器标识

当您在创建的函数或函数别名中创建了一个HTTP类型的触发器后,在应用客户端调用函数时需要传入HTTP触发器的标识,查询方法如下:

在函数的触发器页面点击“HTTP触发器”,查看“触发URL”的后缀,获取触发器的标识,格式为“函数名-版本号”。如下图所示,“myhandlerxxxx-$latest”即为HTTP触发器标识。

调用函数

应用集成了云函数SDK后,可以在应用内直接通过SDK API调用AGC中的云函数,云函数SDK与AGC的函数调用基于HTTPS的安全访问。

  1. 在调用函数前,需要调用AGConnectFunction.getInstance初始化AGConnectFunction实例。
    Java
    Kotlin
    收起
    自动换行
    深色代码主题
    复制
    1. private AGConnectFunction function;
    2. function = AGConnectFunction.getInstance();
    收起
    自动换行
    深色代码主题
    复制
    1. var function = AGConnectFunction.getInstance()
  1. 调用AGConnectFunction.wrap设置函数,在方法中传入触发器标识。
  2. 根据函数入参情况,调用相关方法来调用函数。
    • 如果函数没有入参,可以调用FunctionCallable.call()来调用函数。
      Java
      Kotlin
      收起
      自动换行
      深色代码主题
      复制
      1. function.wrap("myhandlerxxxx-$latest").call();
      收起
      自动换行
      深色代码主题
      复制
      1. function.wrap("myhandlerxxxx-$latest").call()
    • 如果函数有入参,可以调用FunctionCallable.call(T object)来调用函数,多个入参添加到object对象中。

      其中HTTP触发器传递给函数的event对象数据格式,请参见event对象说明。

      Java
      Kotlin
      收起
      自动换行
      深色代码主题
      复制
      1. function.wrap("myhandlerxxxx-$latest").call(map);
      收起
      自动换行
      深色代码主题
      复制
      1. function.wrap("myhandlerxxxx-$latest").call(map)
  3. 如果您需要关注函数的返回值,可以在接口返回的Task中设置一个addOnCompleteListener回调监听,在回调方法中获取包含函数执行结果的FunctionResult对象,调用FunctionResult.getValue可以获取函数执行后的返回值或返回对象。
    Java
    Kotlin
    收起
    自动换行
    深色代码主题
    复制
    1. private void getWeek(String date) {
    2. HashMap<String, String> map = new HashMap();
    3. map.put("time", date);
    4. function.wrap("myhandlerxxxx-$latest").call(map)
    5. .addOnCompleteListener(new OnCompleteListener<FunctionResult>() {
    6. @Override
    7. public void onComplete(Task<FunctionResult> task) {
    8. if (task.isSuccessful()) {
    9. String value = task.getResult().getValue();
    10. } else {
    11. Exception e = task.getException();
    12. if (e instanceof AGCFunctionException) {
    13. AGCFunctionException functionException = (AGCFunctionException) e;
    14. int errCode = functionException.getCode();
    15. String message = functionException.getMessage();
    16. }
    17. // ...
    18. }
    19. }
    20. });
    21. }
    收起
    自动换行
    深色代码主题
    复制
    1. private fun getWeek(date: String) {
    2. var function = AGConnectFunction.getInstance()
    3. val map: HashMap<String, String> = HashMap()
    4. map["time"] = date
    5. function.wrap("myhandlerxxxx-\$latest").call(map)
    6. .addOnCompleteListener(OnCompleteListener<FunctionResult?> { task ->
    7. if (task.isSuccessful) {
    8. val value = task.result.value
    9. } else {
    10. val e = task.exception
    11. if (e is AGCFunctionException) {
    12. val functionException = e
    13. val errCode = functionException.code
    14. val message = functionException.message
    15. }
    16. // ...
    17. }
    18. })
    19. }