orbital-flight/craft-celigo

连接到自定义的Celigo My API端点。

1.1.2 2023-12-02 23:54 UTC

This package is auto-updated.

Last update: 2024-10-03 01:42:42 UTC


README

使用此插件将Craft连接到任何自定义Celigo「 My API 」端点,使用控制器或Twig变量。

设置您的端点

您首先需要在Celigo上配置您的自定义My API celigo端点(及其脚本/配置) 在此

一旦您有了API ID和令牌,请转到插件设置并将它们添加到表中。

您需要选择一个句柄来引用您的代码中的每个API。

作为额外的安全措施,您可以使用环境变量来存储您的凭证。

基本用法

一旦您配置了端点,您可以通过调用适当的控制器或直接从您的Twig模板使用插件变量来构建您的请求。

您需要要调用的HTTP方法,您在上一步骤中创建的自定义端点,以及可选的您要传递给API的参数。

*可用的HTTP方法:GET - POST - PUT - UPDATE - DELETE - PATCH

Twig变量

{% set response = craft.celigo.get('my-custom-handle') %}
{% set response = craft.celigo.post('my-custom-handle', {
    param1: "value1",
    param2: "value2",
    param3: [
        subParam1: "value3",
        subParam2: "value4"
    ]
}) %}

您的API响应将被从JSON转换为twig对象。

假设您的API返回以下JSON响应

{
    "weather": {
        "id": 420,
        "main": "Rain",
        "description": "moderate rain"
    }
}

您可以使用response.weather.description输出moderate rain

控制器

您也可以通过调用插件的控制器来调用您的API,使用celigo/call/[HTTP_METHOD]

必需的参数handle是一个字符串,用于调用您的API句柄。

如果您通过HTML表单调用控制器,则响应将以twig对象'response'的形式发送,类似于上面描述的twig变量。

使用params参数按需传递数组形式的额外参数。

最后,您还可以传递一个redirect参数,其中包含您希望响应可用的模板(句柄或路径)(此参数是可选的。如果没有它,控制器将加载请求的模板中的响应)。

示例

<form method="post">
    {{ csrfInput }}
    {{ actionInput('celigo/call/get') }}
    {{ redirectInput('my-template') }}
    {{ hiddenInput('handle', 'my-handle') }}
    {{ hiddenInput('params[user][id]', '42') }}
    {{ hiddenInput('params[user][email]', 'email@example.com') }}
    {{ hiddenInput('params[groups][0][id]', '528491') }}
</form>

上述示例将对my-handle API发出GET请求,并传递以下参数

{
    "user": {
        "id": "42",
        "email": "email@example.com"
    },
    "groups": [
        {
            "id": "528491"
        }
    ]
}

AJAX

如果您通过AJAX请求调用控制器,则响应将以JSON的形式提供。请确保遵循 Craft的常规AJAX约定,例如接受JSON并正确格式化带有CSRF令牌。

const postData = {
    handle: "my-handle",
    params: {
        "user": {
            "id": "42",
            "email": "email@example.com"
        },
        "groups": [
            {
                "id": "528491"
            }
        ]
    }
};

getSessionInfo().then((session) => {
    fetch("/actions/celigo/call/get", {
        method: "POST",
        headers: {
            Accept: "application/json",
            "Content-Type": "application/json",
            "X-CSRF-Token": session.csrfTokenValue,
            "X-Requested-With": "XMLHttpRequest",
        },
        body: JSON.stringify(postData),
    })
    .then((response) => response.json())
    .then((result) => console.log(result));
});

故障排除

您可以通过检查error属性{{ response.error }}来监听错误,该属性提供了关于发生情况的友好、全面的解释。

对于4XX和5XX错误,将生成两个可转储对象以帮助您进行故障排除;

  • errorBody属性将包含主要错误消息和代码;
{{ response.errorBody.message ?? "" }}
{{ response.errorBody.code ?? "" }}
  • debugError属性将包含完整的API响应数据,您可以将其作为对象进行转储。
{% if response.error is defined %}
    {{ dump(response.errorDebug) }}
{% endif %}

对于早期开发,您可以使用以下方式转储任何响应

{% if response is defined %}
    {{ dump(response) }}
{% endif %}

AJAX故障排除基本上与JSON响应相同。

免责声明

此插件主要充当您Craft项目与任何现有Celigo MyAPI端点之间的API桥梁。然而,由于Celigo的解决方案非常完善,可以轻松获取并处理合理的数据。请注意,您应对您脚本的行为以及使用或显示此插件可操作的数据负责。

Orbital-flight与Celigo无关联;-)

要求

此插件需要Craft CMS 4.3.5或更高版本,以及PHP 8.0.2或更高版本。

安装

您可以从插件商店或使用Composer安装此插件。

从插件商店

转到项目控制面板中的插件商店,搜索“Celigo”。然后点击“安装”。

使用Composer

打开您的终端,并运行以下命令:

# go to the project directory
cd /path/to/my-project.test

# tell Composer to load the plugin
composer require orbital-flight/craft-celigo

# tell Craft to install the plugin
./craft plugin/install celigo