
egemenyavuz/rest-transformrest-transform是一个微服务镜像,主要功能是调用指定URL(支持可选负载)并将请求结果存储在可配置的属性中。该服务可灵活用作数据转换(transform)或数据接收端(sink),适用于需要通过HTTP请求与外部系统集成的数据处理场景。
| ENDPOINT | METHOD(S) | 描述 |
|---|---|---|
/transform | POST | 用作转换服务的端点,通常配合http_transform使用 |
/sink | POST | 用作数据接收端的端点 |
| 名称 | 描述 |
|---|---|
service_config_property | 实体中用于指定个性化执行参数的属性,会覆盖对应的环境变量 |
path | 目标URL的路径部分,该值会追加到基础URL后形成最终请求URL |
注:
service_config_property若指定,其值必须指向输入实体中的一个字典,字典字段需为环境变量的子集。
| 配置名称 | 描述 | 是否必填 | 默认值 |
|---|---|---|---|
AUTHORIZATION | 请求目标URL时的授权配置,支持多种认证方式(详见下方授权配置说明) | 否 | None |
LOG_LEVEL | 日志级别 | 否 | 'INFO' |
PORT | 服务监听端口 | 否 | 5001 |
DO_STREAM | 是否流式返回转换结果(流式处理更快但始终返回200状态码) | 否 | true |
DO_VERIFY_SSL | 是否启用SSL验证 | 否 | false |
METHOD * | 调用目标URL的HTTP方法 | 否 | 'GET' |
PROPERTY * | 存储转换结果的属性名称 | 否 | 'response' |
PAYLOAD_PROPERTY_FOR_TRANSFORM_REQUEST * | 包含发送到URL的负载数据的属性名称 | 否 | 'payload' |
URL * | 提供转换数据的目标系统URL(基础URL) | 是 | n/a |
HEADERS * | 发送到目标URL的请求头(JSON格式) | 否 | n/a |
TOLERABLE_STATUS_CODES * | 可容忍的HTTP状态码正则模式(仅适用于/transform端点),匹配时不抛出错误,结果格式为`{"transform_succeeded": true | false, "message": "<错误信息>", "status_code": <状态码>}` | 否 |
SERVICE_CONFIG_PROPERTY | 指向输入实体中服务配置属性的键名 | 否 | 'service_config' |
注:标有
*的配置可通过实体级定制(通过service_config_property环境变量或查询参数)覆盖。
AUTHORIZATION 配置支持以下几种认证方式:
json"AUTHORIZATION": null
json"AUTHORIZATION": { "type": "basic", "basic": ["用户名", "密码"] }
json"AUTHORIZATION": { "type": "oauth2", "oauth2": { "client_id": "OAuth2客户端ID", "client_secret": "OAuth2客户端密钥", "token_url": "OAuth2令牌获取URL" } }
json{ "_id": "my-rest-transform-system", "type": "system:microservice", "docker": { "environment": { "HEADERS": { "Accept": "application/json; version=2", "Authorization": "token my-travis-token" }, "URL": "[***]", "DO_STREAM": false, "PROPERTY": "mytransformresponse", "TOLERABLE_STATUS_CODES": "404|400" }, "image": "sesamcommunity/sesam-rest-transform", "port": 5001 } }
json{ "_id": "my-transform-pipe", "type": "pipe", "source": { "type": "dataset", "dataset": "my-source" }, "transform": [{ "type": "dtl", "rules": { "default": [ ["copy", "_id"], ["add", "id", "_S._id"] ] } }, { "type": "http", "system": "my-rest-transform-system", "url": "/transform?path=/mypath/to/myresource?myid={{ id }}" }, { "type": "dtl", "rules": { "default": [ ["copy", "_id"], ["if", ["eq", "_S.mytransformresponse.transform_succeeded", false], ["comment", "可选:在此处或后续管道中处理容忍的错误"], ["add", "details", "_S.mytransformresponse"] ] ] } }] }
以下组合在上述示例场景中效果等效:
| URL(环境变量) | PATH(查询参数) | 实体(部分负载) | 说明 |
|---|---|---|---|
| [***] | /mypath/to/myresource?myid={{ id }} | ..."id":10... | 最通用的用法,path参数包含完整路径和查询参数 |
| [***] | myresource?myid={{ id }} | ..."id":10 ... | 基础URL包含部分路径,path补充剩余部分 |
| [***]{{ id }} | (空) | ..."id":10... | 最不灵活的用法,URL包含完整路径和参数 |
| [***]{{ _my_full_path}} | (空) | ..."_my_full_path":"mypath/to/myresource?myid=10"... | 最灵活的用法,路径由实体属性动态提供 |



manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务