iii http worker 实战:3 分钟把函数发布成 REST 端点
iii http worker 实战3 分钟把函数发布成 REST 端点【免费下载链接】iiiEffortlessly compose, extend, and observe every service in real-time for the first time ever.项目地址: https://gitcode.com/GitHub_Trending/mo/iii本文带你用 iii 的 http worker 把一个普通函数变成 REST 端点不用自己搭 Web 服务器一条安装命令加几行注册代码端点即可访问。读完并跟着操作你将在本机 3111 端口上得到一个可被 curl 调用的加法接口。快速上手30 秒验证 http worker 端点先给你最终形态确认它能跑之后再逐步骤开。以下是一个 TypeScript 函数的最小可运行写法注册一个http::add函数再用一个type: http的触发器把它绑到POST /math/add。import { registerWorker } from iii-sdk; const url process.env.III_URL; if (!url) throw new Error(III_URL must be set); const worker registerWorker(url, { workerName: my-worker }); worker.registerFunction(http::add, async (payload: { body: { a: number; b: number } }) ({ status_code: 200, body: { c: payload.body.a payload.body.b }, headers: { Content-Type: application/json }, })); worker.registerTrigger({ type: http, function_id: http::add, config: { api_path: /math/add, http_method: POST }, });worker 启动后用这条命令调用你刚暴露的端点curl -X POST http://localhost:3111/math/add -H content-type: application/json -d {a:2,b:3}预期输出状态码 200响应体{c:5}。看到它说明整条链路已通。分步实现从引擎启动到端点上线第 1 步启动引擎。目的所有 worker 都挂在引擎上引擎不跑端点无从谈起。iii --config config.yaml预期结果引擎输出监听地址HTTP API 在http://localhost:3111。仓库自带的 engine/config.yaml 可以直接参考。第 2 步脚手架生成一个 worker。目的先有一个可编辑的 worker 骨架。iii worker init my-worker --language typescript预期结果当前目录下生成my-worker项目。把第 1 节的最小示例写进它的源码处理函数收到的入参就是请求内容body、headers、方法它的返回值就是 HTTP 响应。第 3 步把 worker 加入引擎。目的让引擎拉起来这个 worker 并注册它声明的触发器。iii worker add ./my-worker预期结果worker 注册成功POST /math/add即刻生效。再发一次第 1 节的 curl应返回{c:5}。不想用 TypeScript触发器写法在各语言 SDK 中一一对应核心都是「函数 id 触发器配置」这一对# Python 等价写法 worker.register_function(http::add, add) worker.register_trigger({ type: http, function_id: http::add, config: {api_path: /math/add, http_method: POST}, })// Rust 等价写法 worker.register_trigger( IIITrigger::Http(HttpTriggerConfig::new(/math/add).method(HttpMethod::Post)) .for_function(http::add), )?;配置与参数详解触发器字段、默认端口 3111 从哪来http 触发器的配置结构定义在引擎源码 engine/src/trigger_formats.rs 的HttpTriggerConfig中字段如下字段含义默认值api_path路由路径支持/users/:id风格的路径参数无必填http_method绑定的 HTTP 方法省略时为GETcondition_function_id处理函数执行前先调用的前置判断函数无可选函数返回值的三个字段构成响应契约status_code成为状态码省略时默认 200body成为响应体headers成为响应头三者都可省略。服务器级设置端口、host、CORS、超时不属于触发器而由 configuration worker 在运行时管理。默认端口3111就写在 engine/worker-compose.yaml 的http段里port: 3111。configuration worker 还支持模板插值例如${HTTP_PORT:3111}会被强制为整数 3111 参与校验相关断言见 engine/src/workers/configuration/store.rs。因此换端口、开 CORS 都走 configuration worker 的运行时通道不必改 worker 代码。验证与常见问题预期响应与易错点排查先确认成功基准对POST /math/add发送{a:2,b:3}应得到{c:5}状态码 200Content-Type为application/json。如果结果对不上按下面三个方向排查⚠️404 或无响应先确认 worker 是否真的加入引擎iii worker add ./my-worker是否执行成功再确认触发器的api_path与实际请求路径逐字一致包括前导/。返回的不是你写的内容检查方法是否匹配。http_method省略时端点默认绑定 GET示例里的 POST 请求只会触发注册了 POST 的函数方法不匹配时你的函数根本不会执行。状态码始终是 200响应字段名必须是status_code写成status会被忽略引擎按默认值 200 返回。错误场景要显式给出如 400、404。延伸阅读http worker 官方文档路径模式、请求与响应的完整字段说明。触发器配置源码HttpTriggerConfig、HttpCallRequest、HttpCallResponse的原始定义。configuration worker 说明运行时端口、CORS、超时如何修改。worker 脚手架指南iii worker init支持的参数与项目结构。【免费下载链接】iiiEffortlessly compose, extend, and observe every service in real-time for the first time ever.项目地址: https://gitcode.com/GitHub_Trending/mo/iii创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考