Http
Http 源连接器
支持的引擎
Spark
Flink
SeaTunnel Zeta
主要特性
描述
用于从 Http 读取数据。
支持的数据源信息
为了使用 Http 连接器,需要以下依赖项。 可以通过 install-plugin.sh 或从 Maven 中央仓库下载。
| 数据源 | 支持的版本 | 依赖 |
|---|---|---|
| Http | 通用 | 下载 |
源选项
| 名称 | 类型 | 是否必须 | 默认值 | 描述 |
|---|---|---|---|---|
| url | String | 是 | - | Http 请求 URL。 |
| schema | Config | 否 | - | Http 和 seatunnel 数据结构映射。更多详情请参考 Schema 特性。 |
| schema.fields | Config | 否 | - | 上游数据的 schema 字段 |
| json_field | Config | 否 | - | 此参数帮助您配置 schema,因此此参数必须与 schema 一起使用。 |
| pageing | Config | 否 | - | 此参数用于分页查询 |
| pageing.page_field | String | 否 | - | 此参数用于指定请求中的页面字段名称。它可以在 headers、params 或 body 中使用占位符,如 ${page_field}。 |
| pageing.use_placeholder_replacement | Boolean | 否 | false | 如果为 true,则使用占位符替换(${field})用于 headers、parameters 和 body 值,否则使用基于键的替换。 |
| pageing.total_page_size | Int | 否 | - | 此参数用于控制总页数 |
| pageing.batch_size | Int | 否 | - | 每个请求返回的批量大小,用于在总页数未知时确定是否继续 |
| pageing.start_page_number | Int | 否 | 1 | 指定同步开始的页码 |
| pageing.page_type | String | 否 | PageNumber | 此参数用于指定页面类型,如果未设置则为 PageNumber,仅支持 PageNumber 和 Cursor。 |
| pageing.cursor_field | String | 否 | - | 此参数用于指定请求参数中的游标字段名称。 |
| pageing.cursor_response_field | String | 否 | - | 此参数指定从中检索游标的响应字段。 |
| content_field | String | 否 | - | 此参数可以获取一些 json 数据。如果您只需要 'book' 部分的数据,配置 content_field = "$.store.book.*"。 |
| format | String | 否 | text | 上游数据的格式,支持 json text binary,默认为 text。当设置为 binary 时,响应体作为原始字节处理,用于下载文件(PDF、图片、ZIP 等)。 |
| binary_chunk_size | Long | 否 | 10485760 | 当 format = binary 时的分片大小(字节)。大文件会被拆分为多行。默认 10MB。仅在 BATCH 模式下生效。 |
| method | String | 否 | get | Http 请求方法,仅支持 GET、POST 方法。 |
| headers | Map | 否 | - | Http 头信息。 |
| params | Map | 否 | - | Http 参数。 |
| body | String | 否 | - | Http 请求体,程序将自动添加 http header application/json,body 是 jsonbody。 |
| poll_interval_millis | Int | 否 | - | 流模式下请求 http api 的间隔(毫秒)。 |
| retry | Int | 否 | - | 如果请求 http 返回 IOException 的最大重试次数。 |
| retry_backoff_multiplier_ms | Int | 否 | 100 | 请求 http 失败时的重试退避时间(毫秒)乘数。 |
| retry_backoff_max_ms | Int | 否 | 10000 | 请求 http 失败时的最大重试退避时间(毫秒) |
| enable_multi_lines | Boolean | 否 | false | |
| connect_timeout_ms | Int | 否 | 12000 | 连接超时设置,默认 12 秒。 |
| socket_timeout_ms | Int | 否 | 60000 | Socket 超时设置,默认 60 秒。 |
| common-options | 否 | - | 源插件通用参数,请参考 Source Common Options 获取详细信息 | |
| keep_params_as_form | Boolean | 否 | false | 是否按照表单提交参数,用于兼容旧行为。当为 true 时,params 参数的值通过表单提交。 |
| keep_page_param_as_http_param | Boolean | 否 | false | 是否将分页参数设置为 params。用于兼容旧行为。 |
| json_filed_missed_return_null | Boolean | 否 | false | 当 JSON 字段缺失时,设置为 true 并返回 null,否则返回错误。 |
如何创建 Http 数据同步作业
env {
parallelism = 1
job.mode = "BATCH"
}
source {
Http {
plugin_output = "http"
url = "http://mockserver:1080/example/http"
method = "GET"
format = "json"
schema = {
fields {
c_map = "map<string, string>"
c_array = "array<int>"
c_string = string
c_boolean = boolean
c_tinyint = tinyint
c_smallint = smallint
c_int = int
c_bigint = bigint
c_float = float
c_double = double
c_bytes = bytes
c_date = date
c_decimal = "decimal(38, 18)"
c_timestamp = timestamp
c_row = {
C_MAP = "map<string, string>"
C_ARRAY = "array<int>"
C_STRING = string
C_BOOLEAN = boolean
C_TINYINT = tinyint
C_SMALLINT = smallint
C_INT = int
C_BIGINT = bigint
C_FLOAT = float
C_DOUBLE = double
C_BYTES = bytes
C_DATE = date
C_DECIMAL = "decimal(38, 18)"
C_TIMESTAMP = timestamp
}
}
}
}
}
# 控制台打印读取的 Http 数据
sink {
Console {
parallelism = 1
}
}
参数解释
format
当您指定 format 为 json 时,您还应该指定 schema 选项,例如:
上游数据如下:
{
"code": 200,
"data": "get success",
"success": true
}
您应该指定 schema 如下:
schema {
fields {
code = int
data = string
success = boolean
}
}
连接器将生成如下数据:
| code | data | success |
|---|---|---|
| 200 | get success | true |
当您指定 format 为 text 时,连接器不会对上游数据做任何处理,例如:
上游数据如下:
{
"code": 200,
"data": "get success",
"success": true
}
连接器将生成如下数据:
| content |
|---|
| {"code": 200, "data": "get success", "success": true} |
当您指定 format 为 binary 时,HTTP 响应体作为原始字节处理,用于下载文件(PDF、图片、ZIP 等)。输出 schema 固定为 (data: bytes, relativePath: string, partIndex: long)。大文件会根据 binary_chunk_size 自动拆分为多行。仅支持 BATCH 模式,且不支持分页(pageing)。
示例:通过 HTTP 下载文件并写入 LocalFileSink:
env {
parallelism = 1
job.mode = "BATCH"
}
source {
Http {
url = "http://example.com/files/report.pdf"
method = "GET"
format = "binary"
binary_chunk_size = 10485760 # 每个分片 10MB
schema = {
fields {
data = bytes
relativePath = string
partIndex = long
}
}
}
}
sink {
LocalFile {
path = "/tmp/download"
file_format = "binary"
}
}
keep_params_as_form
为了兼容旧版本的 http。
当设置为 true 时,<params> 和 <pageing> 将以表单形式提交。
当设置为 false 时,<params> 将添加到 url 路径中,而 <pageing> 不会添加到 body 或表单中。它将替换 params 和 body 中的占位符。
keep_page_param_as_http_param
是否将分页参数设置为 params。
当设置为 true 时,<pageing> 设置为 <params>。
当设置为 false 时,当页面字段存在于 <body> 或 <params> 中时,替换值。
当设置为 false 时,配置示例:
body="""{"id":1,"page":"${page}"}"""
params={
page: "${page}"
}
params
默认情况下,参数将添加到 url 路径中。 如果您需要保持旧版本行为,请检查 keep_params_as_form。
body
HTTP body 用于在请求或响应中携带实际数据,包括 JSON、表单提交。
参考格式如下:
body="{"id":1,"name":"seatunnel"}"
对于表单提交,请按如下设置 content-type。
headers {
Content-Type = "application/x-www-form-urlencoded"
}
分页与最终请求形态排查
下面几条规则最容易混淆,建议先按“最终发出的 HTTP 请求长什么样”来理解:
GET请求:params一定会被拼到 URL 查询串里。POST且keep_params_as_form = false:params仍然会拼到 URL 查询串里- 在默认的非 form 分支上,
body会作为 JSON body 发送 - 如果没有配置
body,并且请求仍然走这个默认非 form 分支,运行时会发送一个空 JSON 对象{}作为请求体 - 如果你显式把
Content-Type设为application/x-www-form-urlencoded,运行时会改走 form-body 分支,而不是默认 JSON 分支
POST且keep_params_as_form = true:params会并入表单 body- 如果未显式设置
Content-Type,SeaTunnel 会自动补application/x-www-form-urlencoded - 如果
body与params出现同名键,params的值会覆盖body中同名键
keep_page_param_as_http_param = true:分页字段会直接写入paramskeep_page_param_as_http_param = false:SeaTunnel 只会更新 headers、params、body 里已经存在的同名键或占位符,不会凭空新增分页字段pageing.use_placeholder_replacement = true:支持${page}、${cursor}占位符,也支持"10${page}" -> "105"这种带前后缀的替换;为false时只做按 key 的整值替换
示例 1:GET 分页,页码写入查询参数
source {
Http {
url = "https://api.example.com/orders"
method = "GET"
params = {
page = "${page}"
size = "100"
}
pageing = {
page_field = "page"
page_type = "PageNumber"
start_page_number = 3
use_placeholder_replacement = true
}
}
}
当页码推进到 3 时,最终请求为:
GET https://api.example.com/orders?page=3&size=100
示例 2:POST JSON(默认非 form 分支),请求参数进 URL,分页字段留在 body
source {
Http {
url = "https://api.example.com/orders/search"
method = "POST"
keep_params_as_form = false
params = {
tenant = "acme"
}
body = """{"page":"${page}","pageSize":100}"""
pageing = {
page_field = "page"
page_type = "PageNumber"
start_page_number = 3
use_placeholder_replacement = true
}
}
}
当页码推进到 3 时,最终请求为:
POST https://api.example.com/orders/search?tenant=acme
Content-Type: application/json
Body: {"page":"3","pageSize":100}
示例 3:POST 表单,请求参数和分页字段都写入表单 body
source {
Http {
url = "https://api.example.com/orders/search"
method = "POST"
keep_params_as_form = true
keep_page_param_as_http_param = true
params = {
size = "100"
}
pageing = {
page_field = "page"
page_type = "PageNumber"
start_page_number = 3
}
}
}
当页码推进到 3 时,最终请求为:
POST https://api.example.com/orders/search
Content-Type: application/x-www-form-urlencoded
Body: size=100&page=3
content_field
此参数可以获取一些 json 数据。如果您只需要 'book' 部分的数据,配置 content_field = "$.store.book.*"。
如果您的返回数据看起来像这样。
{
"store": {
"book": [
{
"category": "reference",
"author": "Nigel Rees",
"title": "Sayings of the Century",
"price": 8.95
},
{
"category": "fiction",
"author": "Evelyn Waugh",
"title": "Sword of Honour",
"price": 12.99
}
],
"bicycle": {
"color": "red",
"price": 19.95
}
},
"expensive": 10
}
您可以配置 content_field = "$.store.book.*" 并且返回的结果看起来像这样:
[
{
"category": "reference",
"author": "Nigel Rees",
"title": "Sayings of the Century",
"price": 8.95
},
{
"category": "fiction",
"author": "Evelyn Waugh",
"title": "Sword of Honour",
"price": 12.99
}
]
然后您可以使用更简单的 schema 获取所需的结果,如
Http {
url = "http://mockserver:1080/contentjson/mock"
method = "GET"
format = "json"
content_field = "$.store.book.*"
schema = {
fields {
category = string
author = string
title = string
price = string
}
}
}
这里是一个示例:
- 测试数据可以在此链接找到 mockserver-config.json
- 任务配置请参考此链接 http_contentjson_to_assert.conf。
json_field
此参数帮助您配置 schema,因此此参数必须与 schema 一起使用。
如果您的数据看起来像这样:
{
"store": {
"book": [
{
"category": "reference",
"author": "Nigel Rees",
"title": "Sayings of the Century",
"price": 8.95
},
{
"category": "fiction",
"author": "Evelyn Waugh",
"title": "Sword of Honour",
"price": 12.99
}
],
"bicycle": {
"color": "red",
"price": 19.95
}
},
"expensive": 10
}
您可以通过如下配置任务来获取 'book' 的内容:
source {
Http {
url = "http://mockserver:1080/jsonpath/mock"
method = "GET"
format = "json"
json_field = {
category = "$.store.book[*].category"
author = "$.store.book[*].author"
title = "$.store.book[*].title"
price = "$.store.book[*].price"
}
schema = {
fields {
category = string
author = string
title = string
price = string
}
}
}
}
- 测试数据可以在此链接找到 mockserver-config.json
- 任务配置请参考此链接 http_jsonpath_to_assert.conf。
pageing
当前支持的分页类型是 PageNumber 和 Cursor。
如果您需要使用分页,您需要配置 pageing。默认分页类型是 PageNumber。
1. PageNumber
使用 PageNumber 分页时,您可以在 HTTP 请求的不同部分包含页面参数:
- 在 URL 参数中:将页面参数添加到
params部分 - 在请求体中:在
bodyJSON 中包含页面参数 - 在头信息中:将页面参数添加到
headers部分
您可以使用占位符如 ${page} 与 use_placeholder_replacement = true 来动态更新这些值。占位符可以以各种格式使用:
- 作为独立值:
"${page}" - 带前缀/后缀:
"10${page}"或"page-${page}" - 作为不带引号的数字:
${page}(在 JSON 体中) - 在嵌套 JSON 结构中:
{"pagination":{"page":${page}}}
示例 1:在 body 和 params 中使用页面参数
source {
Http {
url = "http://localhost:8080/mock/queryData"
method = "POST"
format = "json"
body="""{"id":1,"page":"${page}"}"""
content_field = "$.data.*"
params={
page: "${page}"
}
pageing={
#你可以不设置此参数,默认值是 PageNumber
page_type="PageNumber"
total_page_size=20
page_field=page
use_placeholder_replacement=true
#当不知道 total_page_size 时使用 batch_size,如果读取大小<batch_size 则完成,否则继续
#batch_size=10
}
schema = {
fields {
name = string
age = string
}
}
}
}
示例 2:在 headers 中使用页面参数
source {
Http {
url = "http://localhost:8080/mock/queryData"
method = "GET"
format = "json"
headers={
Page-Number = "${pageNo}"
Authorization = "Bearer token-123"
}
pageing={
page_field = pageNo
start_page_number = 1
batch_size = 10
use_placeholder_replacement = true
}
schema = {
fields {
name = string
age = string
}
}
}
}
示例 3:使用基于键的替换(不使用占位符)
source {
Http {
url = "http://localhost:8080/mock/queryData"
method = "GET"
format = "json"
params={
page = "1"
}
pageing={
page_field = page
start_page_number = 1
batch_size = 10
use_placeholder_replacement = false
}
schema = {
fields {
name = string
age = string
}
}
}
}
示例 4:在 headers 中使用带前缀的页码
source {
Http {
url = "http://localhost:8080/mock/queryData"
method = "GET"
format = "json"
headers = {
Page-Number = "10${page}" # 当 page=5 时将变为 "105"
Authorization = "Bearer token-123"
}
pageing = {
page_field = page
start_page_number = 5
batch_size = 10
use_placeholder_replacement = true
}
schema = {
fields {
name = string
age = string
}
}
}
}
示例 5:在 body 中使用不带引号的页码
source {
Http {
url = "http://localhost:8080/mock/queryData"
method = "POST"
format = "json"
body = """{"a":${page},"limit":10}""" # 不带引号的数字
pageing = {
page_field = page
start_page_number = 1
batch_size = 10
use_placeholder_replacement = true
}
schema = {
fields {
name = string
age = string
}
}
}
}
示例 6:使用带页面参数的嵌套 JSON 结构
source {
Http {
url = "http://localhost:8080/mock/queryData"
method = "POST"
format = "json"
body = """{"pagination":{"page":${page},"size":10},"filters":{"active":true}}""" # 嵌套结构
pageing = {
page_field = page
start_page_number = 1
total_page_size = 20
use_placeholder_replacement = true
}
schema = {
fields {
name = string
age = string
}
}
}
}
2. Cursor
pageing.page_type 参数必须设置为 Cursor。
cursor_field 是请求参数中游标的字段名称。
cursor_response_field 是响应数据中分页令牌字段的名称,我们应该将其添加到请求的分页字段中。
source {
Http {
plugin_output = "http"
url = "http://localhost:8080/mock/cursor_data"
method = "GET"
format = "json"
content_field = "$.data.*"
keep_page_param_as_http_param = true
pageing ={
page_type="Cursor"
cursor_field ="cursor"
cursor_response_field="$.paging.cursors.next"
}
schema = {
fields {
content=string
id=int
name=string
}
}
json_field = {
content = "$.data[*].content"
id = "$.data[*].id"
name = "$.data[*].name"
}
}
}
变更日志
Change Log
| Change | Commit | Version |
|---|---|---|
| [Fix][Connectors-v2] Fix UT for connector-http (#9821) | https://github.com/apache/seatunnel/commit/2653f6798e | dev |
| [Fix][connector-http] fix parsing httpjson, the number of two fields is inconsistent with the import failure (#9103) | https://github.com/apache/seatunnel/commit/c8ade098ee | 2.3.12 |
| [Fix][Connector-HTTP] Add default content-type when user not set (#9497) | https://github.com/apache/seatunnel/commit/8da0a78c1d | 2.3.12 |
| [Bug][connector-http] Fix paging request running infinitely (#9504) | https://github.com/apache/seatunnel/commit/1844e04c97 | 2.3.12 |
| [Bug][seatunnel-connector-http-base] An NPE (NullPointerException) will occur when the pageField is null (#9498) | https://github.com/apache/seatunnel/commit/b898a3225c | 2.3.12 |
| [Fix][Connector-Http] fix Invalid mime type (#9363) | https://github.com/apache/seatunnel/commit/4d7d765a26 | 2.3.12 |
| [Feature][http-Sink] Implementing http batch writes (#9292) | https://github.com/apache/seatunnel/commit/04ee8aca04 | 2.3.11 |
| [Feature][connector-http] Parameters support placeholder replacement (#9184) | https://github.com/apache/seatunnel/commit/8617014edc | 2.3.11 |
| [Improve][Connector-V2][Http] Supports Cursor-based Pagination (#9109) (#9138) | https://github.com/apache/seatunnel/commit/879b1e2d5b | 2.3.11 |
| [improve] http connector options (#8969) | https://github.com/apache/seatunnel/commit/63ff9f910a | 2.3.10 |
| [Fix][connector-http] fix when post have param (#8434) | https://github.com/apache/seatunnel/commit/c1b2675ab0 | 2.3.10 |
| [Improve] restruct connector common options (#8634) | https://github.com/apache/seatunnel/commit/f3499a6eeb | 2.3.10 |
| [Improve][dist]add shade check rule (#8136) | https://github.com/apache/seatunnel/commit/51ef800016 | 2.3.9 |
| [Feature][Connector-V2] Add prometheus source and sink (#7265) | https://github.com/apache/seatunnel/commit/dde6f9fcbd | 2.3.9 |
| [Feature][Restapi] Allow metrics information to be associated to logical plan nodes (#7786) | https://github.com/apache/seatunnel/commit/6b7c53d03c | 2.3.9 |
| [Fix][Connector-V2] Fix http source can not read streaming (#7703) | https://github.com/apache/seatunnel/commit/a0ffa7ba02 | 2.3.8 |
| [Feature][Connector-V2] Suport choose the start page in http paging (#7180) | https://github.com/apache/seatunnel/commit/ed15f0dcf9 | 2.3.8 |
| [Improve][Connector] Add multi-table sink option check (#7360) | https://github.com/apache/seatunnel/commit/2489f6446b | 2.3.7 |
| [Improve][API] Make sure the table name in TablePath not be null (#7252) | https://github.com/apache/seatunnel/commit/764d8b0bc8 | 2.3.7 |
| [Feature][Core] Support using upstream table placeholders in sink options and auto replacement (#7131) | https://github.com/apache/seatunnel/commit/c4ca74122c | 2.3.6 |
| [Feature][Kafka] Support multi-table source read (#5992) | https://github.com/apache/seatunnel/commit/60104602d1 | 2.3.6 |
| [Improve][CDC] Close idle subtasks gorup(reader/writer) in increment phase (#6526) | https://github.com/apache/seatunnel/commit/454c339b9c | 2.3.6 |
| Fix HttpSource bug (#6824) | https://github.com/apache/seatunnel/commit/c3ab84caa4 | 2.3.6 |
| [Hotfix] fix http source can not read yyyy-MM-dd HH:mm:ss format bug & Improve DateTime Utils (#6601) | https://github.com/apache/seatunnel/commit/19888e7969 | 2.3.5 |
| [Improve][Connector-V2]Support multi-table sink feature for httpsink (#6316) | https://github.com/apache/seatunnel/commit/e6c51a95c7 | 2.3.5 |
| [Improve][HttpConnector]Increase custom configuration timeout. (#6223) | https://github.com/apache/seatunnel/commit/fa5b7d3d83 | 2.3.4 |
| [Feature][Core] Upgrade flink source translation (#5100) | https://github.com/apache/seatunnel/commit/5aabb14a94 | 2.3.4 |
| [BUG][Connector-V2][Http] fix bug http config no schema option and improve e2e test add case (#5939) | https://github.com/apache/seatunnel/commit/8a71b9e072 | 2.3.4 |
| [Feature][Connector-V2] Support TableSourceFactory/TableSinkFactory on redis (#5901) | https://github.com/apache/seatunnel/commit/e84dcb8c10 | 2.3.4 |
| [Feature][Connector-V2] Support TableSourceFactory/TableSinkFactory on http (#5816) | https://github.com/apache/seatunnel/commit/6f49ec6ead | 2.3.4 |
| [Improve][Common] Introduce new error define rule (#5793) | https://github.com/apache/seatunnel/commit/9d1b2582b2 | 2.3.4 |
| [Feature][Transform] add JsonPath transform (#5632) | https://github.com/apache/seatunnel/commit/d908f0af40 | 2.3.4 |
[Improve] Remove use SeaTunnelSink::getConsumedType method and mark it as deprecated (#5755) | https://github.com/apache/seatunnel/commit/8de7408100 | 2.3.4 |
| [Feature][Connector-V2] HTTP supports page increase #5477 (#5561) | https://github.com/apache/seatunnel/commit/bb180b2988 | 2.3.4 |
| [improve][Connector-V2][http] improve http e2e test (#5655) | https://github.com/apache/seatunnel/commit/f5867adcaa | 2.3.4 |
| Support config column/primaryKey/constraintKey in schema (#5564) | https://github.com/apache/seatunnel/commit/eac76b4e50 | 2.3.4 |
| [BUG][Connector-V2][http] fix httpheader cover (#5446) | https://github.com/apache/seatunnel/commit/cdd8e0a65e | 2.3.4 |
| [Feature][Connector][Http] Support multi-line text splits (#4698) | https://github.com/apache/seatunnel/commit/6a524981cb | 2.3.2 |
| Merge branch 'dev' into merge/cdc | https://github.com/apache/seatunnel/commit/4324ee1912 | 2.3.1 |
| [Improve][Project] Code format with spotless plugin. | https://github.com/apache/seatunnel/commit/423b583038 | 2.3.1 |
| [Feature][Connector-V2][Github] Adding Github Source Connector (#4155) | https://github.com/apache/seatunnel/commit/49d9172b10 | 2.3.1 |
| [improve][api] Refactoring schema parse (#4157) | https://github.com/apache/seatunnel/commit/b2f573a13e | 2.3.1 |
| [Improve][build] Give the maven module a human readable name (#4114) | https://github.com/apache/seatunnel/commit/d7cd601051 | 2.3.1 |
| [Improve][Project] Code format with spotless plugin. (#4101) | https://github.com/apache/seatunnel/commit/a2ab166561 | 2.3.1 |
| [Feature][Connector-V2][Persistiq]Add Persistiq source connector (#3460) | https://github.com/apache/seatunnel/commit/aec3912edf | 2.3.1 |
| [Feature][Connector] add get source method to all source connector (#3846) | https://github.com/apache/seatunnel/commit/417178fb84 | 2.3.1 |
| [Feature][Connector-V2][Notion] Add Notion source connector (#3470) | https://github.com/apache/seatunnel/commit/46abc6d943 | 2.3.0 |
| [Hotfix][seatunnel-connectors-v2] [connector-http] fix http json request error (#3629) | https://github.com/apache/seatunnel/commit/54f594d6ca | 2.3.0 |
| [Improve][Connector-V2][Http]Improve json parse option rule for all http connector (#3627) | https://github.com/apache/seatunnel/commit/589e4161ec | 2.3.0 |
| [Improve][Connector-V2][OneSignal]Unified exception for OneSignal connector (#3609) | https://github.com/apache/seatunnel/commit/97cce8c255 | 2.3.0 |
| [Feature][Connector-V2][HTTP] Use json-path parsing (#3510) | https://github.com/apache/seatunnel/commit/1807eb6c95 | 2.3.0 |
| [Improve][Connector-V2][Http]Unified exception for http source & sink… (#3594) | https://github.com/apache/seatunnel/commit/d798cd8670 | 2.3.0 |
| [Hotfix][OptionRule] Fix option rule about all connectors (#3592) | https://github.com/apache/seatunnel/commit/226dc6a119 | 2.3.0 |
| [Improve][Connector-V2][MyHours]Unified exception for MyHours connector (#3538) | https://github.com/apache/seatunnel/commit/48ab7c97d5 | 2.3.0 |
| [Improve][Connector-V2][Gitlab] Unified excetion for Gitlab connector and improve optione rule (#3533) | https://github.com/apache/seatunnel/commit/77f68f1eef | 2.3.0 |
| [Improve][Connector-V2][Klaviyo]Unified exception for Klaviyo connector (#3555) | https://github.com/apache/seatunnel/commit/08f8615078 | 2.3.0 |
| [Feature][Connector-V2][Jira]Add Jira source connector (#3473) | https://github.com/apache/seatunnel/commit/fb40162c07 | 2.3.0 |
| [Improve][Connector-V2][Lemlist] Unified exception for lemlist connector (#3534) | https://github.com/apache/seatunnel/commit/705728ebbb | 2.3.0 |
| [Feature][Connector V2] add gitlab source connector (#3408) | https://github.com/apache/seatunnel/commit/545595c6d2 | 2.3.0 |
| [Feature][Connector-V2][OneSignal]Add OneSignal source conector (#3454) | https://github.com/apache/seatunnel/commit/b318b3166f | 2.3.0 |
| [Feature][Connector-V2][Klaviyo]Add Klaviyo source connector (#3443) | https://github.com/apache/seatunnel/commit/fc00a2866b | 2.3.0 |
| [Feature][Connector-V2][Lemlist]Add Lemlist source connector (#3346) | https://github.com/apache/seatunnel/commit/12d66b4247 | 2.3.0 |
| [HotFix][Core][API] Fix OptionValidation error code (#3439) | https://github.com/apache/seatunnel/commit/ace219f376 | 2.3.0 |
| [Improve][Connector-V2][My Hours]Add http method enum && Improve My Hours connector option rule (#3390) | https://github.com/apache/seatunnel/commit/a86c9d90f7 | 2.3.0 |
| [Feature][Connector-V2][Http] Add option rules && Improve Myhours sink connector (#3351) | https://github.com/apache/seatunnel/commit/cc8bb60c83 | 2.3.0 |
| [Feature][Connector-V2][My Hours] Add My Hours Source Connector (#3228) | https://github.com/apache/seatunnel/commit/4104a3e30e | 2.3.0 |
| [Improve][all] change Log to @Slf4j (#3001) | https://github.com/apache/seatunnel/commit/6016100f12 | 2.3.0-beta |
| [Bug][format][json] Fix jackson package conflict with spark (#2934) | https://github.com/apache/seatunnel/commit/1a92b8369b | 2.3.0-beta |
| [Bug][Connector-V2] Fix wechat sink data serialization (#2856) | https://github.com/apache/seatunnel/commit/3aee11fc16 | 2.3.0-beta |
| [Improve][Connector-V2] Improve http connector (#2833) | https://github.com/apache/seatunnel/commit/5b3957bc52 | 2.2.0-beta |
| [DEV][Api] Replace SeaTunnelContext with JobContext and remove singleton pattern (#2706) | https://github.com/apache/seatunnel/commit/cbf82f755c | 2.2.0-beta |
| [Improve][build] Improved scope of maven-shade-plugin (#2665) | https://github.com/apache/seatunnel/commit/93bc8bd116 | 2.2.0-beta |
| [#2606]Dependency management split (#2630) | https://github.com/apache/seatunnel/commit/fc047be69b | 2.2.0-beta |
| [chore][connector-common] Rename SeatunnelSchema to SeaTunnelSchema (#2538) | https://github.com/apache/seatunnel/commit/7dc2a27388 | 2.2.0-beta |
| [Bug][Connector-V2] Fix the bug that set params by mistake (#2511) (#2513) | https://github.com/apache/seatunnel/commit/ead3d68b0e | 2.2.0-beta |
| [Improve][Connector-V2] Http source support user-defined schema (#2439) | https://github.com/apache/seatunnel/commit/793933b6b8 | 2.2.0-beta |
| [Feature][Connector-V2] Add Enterprise Wechat sink connector (#2412) | https://github.com/apache/seatunnel/commit/3e200e0a38 | 2.2.0-beta |
| [Improve][Connector-V2] Format SeaTunnelRow use seatunnel-format-json (#2435) | https://github.com/apache/seatunnel/commit/e4e8f7fbff | 2.2.0-beta |
| [Improve][Connector-V2] Make the attribute of http-connector from private to protected (#2418) | https://github.com/apache/seatunnel/commit/f3b00ef696 | 2.2.0-beta |
| [Feature][Connector-V2] Add feishu sink (#2381) | https://github.com/apache/seatunnel/commit/0fec8ca438 | 2.2.0-beta |
| [Feature][Connector-V2] Add http sink(Webhook) (#2348) | https://github.com/apache/seatunnel/commit/4b7207490a | 2.2.0-beta |
| [Improve][Http Connector-V2-Source] Refactor the code and make code more clearly (#2322) | https://github.com/apache/seatunnel/commit/a9a797ad85 | 2.2.0-beta |
| [Improve][Connector-V2] Fix the log information (#2317) | https://github.com/apache/seatunnel/commit/736983a708 | 2.2.0-beta |
| [Improve][Connector-V2] Http client provider improve (#2312) | https://github.com/apache/seatunnel/commit/cc950007c8 | 2.2.0-beta |
| [Improve][Connector-V2] Fix 'Singleton' word error (#2309) | https://github.com/apache/seatunnel/commit/12ebcb4a0d | 2.2.0-beta |
| [api-draft][Optimize] Optimize module name (#2062) | https://github.com/apache/seatunnel/commit/f79e3112b1 | 2.2.0-beta |