orbital-flight / craft-celigo
连接到自定义的Celigo My API端点。
Requires
- php: >=8.0.2
- craftcms/cms: ^4.3.5
Requires (Dev)
- craftcms/ecs: dev-main
- craftcms/phpstan: dev-main
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