跳到主要内容
版本:Next

Http

Http 源连接器

支持的引擎

Spark
Flink
SeaTunnel Zeta

主要特性

描述

用于从 Http 读取数据。

支持的数据源信息

为了使用 Http 连接器,需要以下依赖项。 可以通过 install-plugin.sh 或从 Maven 中央仓库下载。

数据源支持的版本依赖
Http通用下载

源选项

名称类型是否必须默认值描述
urlString-Http 请求 URL。
schemaConfig-Http 和 seatunnel 数据结构映射。更多详情请参考 Schema 特性
schema.fieldsConfig-上游数据的 schema 字段
json_fieldConfig-此参数帮助您配置 schema,因此此参数必须与 schema 一起使用。
pageingConfig-此参数用于分页查询
pageing.page_fieldString-此参数用于指定请求中的页面字段名称。它可以在 headers、params 或 body 中使用占位符,如 ${page_field}。
pageing.use_placeholder_replacementBooleanfalse如果为 true,则使用占位符替换(${field})用于 headers、parameters 和 body 值,否则使用基于键的替换。
pageing.total_page_sizeInt-此参数用于控制总页数
pageing.batch_sizeInt-每个请求返回的批量大小,用于在总页数未知时确定是否继续
pageing.start_page_numberInt1指定同步开始的页码
pageing.page_typeStringPageNumber此参数用于指定页面类型,如果未设置则为 PageNumber,仅支持 PageNumberCursor
pageing.cursor_fieldString-此参数用于指定请求参数中的游标字段名称。
pageing.cursor_response_fieldString-此参数指定从中检索游标的响应字段。
content_fieldString-此参数可以获取一些 json 数据。如果您只需要 'book' 部分的数据,配置 content_field = "$.store.book.*"
formatStringtext上游数据的格式,支持 json text binary,默认为 text。当设置为 binary 时,响应体作为原始字节处理,用于下载文件(PDF、图片、ZIP 等)。
binary_chunk_sizeLong10485760format = binary 时的分片大小(字节)。大文件会被拆分为多行。默认 10MB。仅在 BATCH 模式下生效。
methodStringgetHttp 请求方法,仅支持 GET、POST 方法。
headersMap-Http 头信息。
paramsMap-Http 参数。
bodyString-Http 请求体,程序将自动添加 http header application/json,body 是 jsonbody。
poll_interval_millisInt-流模式下请求 http api 的间隔(毫秒)。
retryInt-如果请求 http 返回 IOException 的最大重试次数。
retry_backoff_multiplier_msInt100请求 http 失败时的重试退避时间(毫秒)乘数。
retry_backoff_max_msInt10000请求 http 失败时的最大重试退避时间(毫秒)
enable_multi_linesBooleanfalse
connect_timeout_msInt12000连接超时设置,默认 12 秒。
socket_timeout_msInt60000Socket 超时设置,默认 60 秒。
common-options-源插件通用参数,请参考 Source Common Options 获取详细信息
keep_params_as_formBooleanfalse是否按照表单提交参数,用于兼容旧行为。当为 true 时,params 参数的值通过表单提交。
keep_page_param_as_http_paramBooleanfalse是否将分页参数设置为 params。用于兼容旧行为。
json_filed_missed_return_nullBooleanfalse当 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
}
}

连接器将生成如下数据:

codedatasuccess
200get successtrue

当您指定 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 请求长什么样”来理解:

  1. GET 请求:params 一定会被拼到 URL 查询串里。
  2. POSTkeep_params_as_form = false
    • params 仍然会拼到 URL 查询串里
    • 在默认的非 form 分支上,body 会作为 JSON body 发送
    • 如果没有配置 body,并且请求仍然走这个默认非 form 分支,运行时会发送一个空 JSON 对象 {} 作为请求体
    • 如果你显式把 Content-Type 设为 application/x-www-form-urlencoded,运行时会改走 form-body 分支,而不是默认 JSON 分支
  3. POSTkeep_params_as_form = true
    • params 会并入表单 body
    • 如果未显式设置 Content-Type,SeaTunnel 会自动补 application/x-www-form-urlencoded
    • 如果 bodyparams 出现同名键,params 的值会覆盖 body 中同名键
  4. keep_page_param_as_http_param = true:分页字段会直接写入 params
  5. keep_page_param_as_http_param = false:SeaTunnel 只会更新 headers、params、body 里已经存在的同名键或占位符,不会凭空新增分页字段
  6. 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
}
}
}

这里是一个示例:

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
}
}
}
}

pageing

当前支持的分页类型是 PageNumberCursor。 如果您需要使用分页,您需要配置 pageing。默认分页类型是 PageNumber

1. PageNumber

使用 PageNumber 分页时,您可以在 HTTP 请求的不同部分包含页面参数:

  • 在 URL 参数中:将页面参数添加到 params 部分
  • 在请求体中:在 body JSON 中包含页面参数
  • 在头信息中:将页面参数添加到 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 参数必须设置为 Cursorcursor_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
ChangeCommitVersion
[Fix][Connectors-v2] Fix UT for connector-http (#9821)https://github.com/apache/seatunnel/commit/2653f6798edev
[Fix][connector-http] fix parsing httpjson, the number of two fields is inconsistent with the import failure (#9103)https://github.com/apache/seatunnel/commit/c8ade098ee2.3.12
[Fix][Connector-HTTP] Add default content-type when user not set (#9497)https://github.com/apache/seatunnel/commit/8da0a78c1d2.3.12
[Bug][connector-http] Fix paging request running infinitely (#9504)https://github.com/apache/seatunnel/commit/1844e04c972.3.12
[Bug][seatunnel-connector-http-base] An NPE (NullPointerException) will occur when the pageField is null (#9498)https://github.com/apache/seatunnel/commit/b898a3225c2.3.12
[Fix][Connector-Http] fix Invalid mime type (#9363)https://github.com/apache/seatunnel/commit/4d7d765a262.3.12
[Feature][http-Sink] Implementing http batch writes (#9292)https://github.com/apache/seatunnel/commit/04ee8aca042.3.11
[Feature][connector-http] Parameters support placeholder replacement (#9184)https://github.com/apache/seatunnel/commit/8617014edc2.3.11
[Improve][Connector-V2][Http] Supports Cursor-based Pagination (#9109) (#9138)https://github.com/apache/seatunnel/commit/879b1e2d5b2.3.11
[improve] http connector options (#8969)https://github.com/apache/seatunnel/commit/63ff9f910a2.3.10
[Fix][connector-http] fix when post have param (#8434)https://github.com/apache/seatunnel/commit/c1b2675ab02.3.10
[Improve] restruct connector common options (#8634)https://github.com/apache/seatunnel/commit/f3499a6eeb2.3.10
[Improve][dist]add shade check rule (#8136)https://github.com/apache/seatunnel/commit/51ef8000162.3.9
[Feature][Connector-V2] Add prometheus source and sink (#7265)https://github.com/apache/seatunnel/commit/dde6f9fcbd2.3.9
[Feature][Restapi] Allow metrics information to be associated to logical plan nodes (#7786)https://github.com/apache/seatunnel/commit/6b7c53d03c2.3.9
[Fix][Connector-V2] Fix http source can not read streaming (#7703)https://github.com/apache/seatunnel/commit/a0ffa7ba022.3.8
[Feature][Connector-V2] Suport choose the start page in http paging (#7180)https://github.com/apache/seatunnel/commit/ed15f0dcf92.3.8
[Improve][Connector] Add multi-table sink option check (#7360)https://github.com/apache/seatunnel/commit/2489f6446b2.3.7
[Improve][API] Make sure the table name in TablePath not be null (#7252)https://github.com/apache/seatunnel/commit/764d8b0bc82.3.7
[Feature][Core] Support using upstream table placeholders in sink options and auto replacement (#7131)https://github.com/apache/seatunnel/commit/c4ca74122c2.3.6
[Feature][Kafka] Support multi-table source read (#5992)https://github.com/apache/seatunnel/commit/60104602d12.3.6
[Improve][CDC] Close idle subtasks gorup(reader/writer) in increment phase (#6526)https://github.com/apache/seatunnel/commit/454c339b9c2.3.6
Fix HttpSource bug (#6824)https://github.com/apache/seatunnel/commit/c3ab84caa42.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/19888e79692.3.5
[Improve][Connector-V2]Support multi-table sink feature for httpsink (#6316)https://github.com/apache/seatunnel/commit/e6c51a95c72.3.5
[Improve][HttpConnector]Increase custom configuration timeout. (#6223)https://github.com/apache/seatunnel/commit/fa5b7d3d832.3.4
[Feature][Core] Upgrade flink source translation (#5100)https://github.com/apache/seatunnel/commit/5aabb14a942.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/8a71b9e0722.3.4
[Feature][Connector-V2] Support TableSourceFactory/TableSinkFactory on redis (#5901)https://github.com/apache/seatunnel/commit/e84dcb8c102.3.4
[Feature][Connector-V2] Support TableSourceFactory/TableSinkFactory on http (#5816)https://github.com/apache/seatunnel/commit/6f49ec6ead2.3.4
[Improve][Common] Introduce new error define rule (#5793)https://github.com/apache/seatunnel/commit/9d1b2582b22.3.4
[Feature][Transform] add JsonPath transform (#5632)https://github.com/apache/seatunnel/commit/d908f0af402.3.4
[Improve] Remove use SeaTunnelSink::getConsumedType method and mark it as deprecated (#5755)https://github.com/apache/seatunnel/commit/8de74081002.3.4
[Feature][Connector-V2] HTTP supports page increase #5477 (#5561)https://github.com/apache/seatunnel/commit/bb180b29882.3.4
[improve][Connector-V2][http] improve http e2e test (#5655)https://github.com/apache/seatunnel/commit/f5867adcaa2.3.4
Support config column/primaryKey/constraintKey in schema (#5564)https://github.com/apache/seatunnel/commit/eac76b4e502.3.4
[BUG][Connector-V2][http] fix httpheader cover (#5446)https://github.com/apache/seatunnel/commit/cdd8e0a65e2.3.4
[Feature][Connector][Http] Support multi-line text splits (#4698)https://github.com/apache/seatunnel/commit/6a524981cb2.3.2
Merge branch 'dev' into merge/cdchttps://github.com/apache/seatunnel/commit/4324ee19122.3.1
[Improve][Project] Code format with spotless plugin.https://github.com/apache/seatunnel/commit/423b5830382.3.1
[Feature][Connector-V2][Github] Adding Github Source Connector (#4155)https://github.com/apache/seatunnel/commit/49d9172b102.3.1
[improve][api] Refactoring schema parse (#4157)https://github.com/apache/seatunnel/commit/b2f573a13e2.3.1
[Improve][build] Give the maven module a human readable name (#4114)https://github.com/apache/seatunnel/commit/d7cd6010512.3.1
[Improve][Project] Code format with spotless plugin. (#4101)https://github.com/apache/seatunnel/commit/a2ab1665612.3.1
[Feature][Connector-V2][Persistiq]Add Persistiq source connector (#3460)https://github.com/apache/seatunnel/commit/aec3912edf2.3.1
[Feature][Connector] add get source method to all source connector (#3846)https://github.com/apache/seatunnel/commit/417178fb842.3.1
[Feature][Connector-V2][Notion] Add Notion source connector (#3470)https://github.com/apache/seatunnel/commit/46abc6d9432.3.0
[Hotfix][seatunnel-connectors-v2] [connector-http] fix http json request error (#3629)https://github.com/apache/seatunnel/commit/54f594d6ca2.3.0
[Improve][Connector-V2][Http]Improve json parse option rule for all http connector (#3627)https://github.com/apache/seatunnel/commit/589e4161ec2.3.0
[Improve][Connector-V2][OneSignal]Unified exception for OneSignal connector (#3609)https://github.com/apache/seatunnel/commit/97cce8c2552.3.0
[Feature][Connector-V2][HTTP] Use json-path parsing (#3510)https://github.com/apache/seatunnel/commit/1807eb6c952.3.0
[Improve][Connector-V2][Http]Unified exception for http source & sink… (#3594)https://github.com/apache/seatunnel/commit/d798cd86702.3.0
[Hotfix][OptionRule] Fix option rule about all connectors (#3592)https://github.com/apache/seatunnel/commit/226dc6a1192.3.0
[Improve][Connector-V2][MyHours]Unified exception for MyHours connector (#3538)https://github.com/apache/seatunnel/commit/48ab7c97d52.3.0
[Improve][Connector-V2][Gitlab] Unified excetion for Gitlab connector and improve optione rule (#3533)https://github.com/apache/seatunnel/commit/77f68f1eef2.3.0
[Improve][Connector-V2][Klaviyo]Unified exception for Klaviyo connector (#3555)https://github.com/apache/seatunnel/commit/08f86150782.3.0
[Feature][Connector-V2][Jira]Add Jira source connector (#3473)https://github.com/apache/seatunnel/commit/fb40162c072.3.0
[Improve][Connector-V2][Lemlist] Unified exception for lemlist connector (#3534)https://github.com/apache/seatunnel/commit/705728ebbb2.3.0
[Feature][Connector V2] add gitlab source connector (#3408)https://github.com/apache/seatunnel/commit/545595c6d22.3.0
[Feature][Connector-V2][OneSignal]Add OneSignal source conector (#3454)https://github.com/apache/seatunnel/commit/b318b3166f2.3.0
[Feature][Connector-V2][Klaviyo]Add Klaviyo source connector (#3443)https://github.com/apache/seatunnel/commit/fc00a2866b2.3.0
[Feature][Connector-V2][Lemlist]Add Lemlist source connector (#3346)https://github.com/apache/seatunnel/commit/12d66b42472.3.0
[HotFix][Core][API] Fix OptionValidation error code (#3439)https://github.com/apache/seatunnel/commit/ace219f3762.3.0
[Improve][Connector-V2][My Hours]Add http method enum && Improve My Hours connector option rule (#3390)https://github.com/apache/seatunnel/commit/a86c9d90f72.3.0
[Feature][Connector-V2][Http] Add option rules && Improve Myhours sink connector (#3351)https://github.com/apache/seatunnel/commit/cc8bb60c832.3.0
[Feature][Connector-V2][My Hours] Add My Hours Source Connector (#3228)https://github.com/apache/seatunnel/commit/4104a3e30e2.3.0
[Improve][all] change Log to @Slf4j (#3001)https://github.com/apache/seatunnel/commit/6016100f122.3.0-beta
[Bug][format][json] Fix jackson package conflict with spark (#2934)https://github.com/apache/seatunnel/commit/1a92b8369b2.3.0-beta
[Bug][Connector-V2] Fix wechat sink data serialization (#2856)https://github.com/apache/seatunnel/commit/3aee11fc162.3.0-beta
[Improve][Connector-V2] Improve http connector (#2833)https://github.com/apache/seatunnel/commit/5b3957bc522.2.0-beta
[DEV][Api] Replace SeaTunnelContext with JobContext and remove singleton pattern (#2706)https://github.com/apache/seatunnel/commit/cbf82f755c2.2.0-beta
[Improve][build] Improved scope of maven-shade-plugin (#2665)https://github.com/apache/seatunnel/commit/93bc8bd1162.2.0-beta
[#2606]Dependency management split (#2630)https://github.com/apache/seatunnel/commit/fc047be69b2.2.0-beta
[chore][connector-common] Rename SeatunnelSchema to SeaTunnelSchema (#2538)https://github.com/apache/seatunnel/commit/7dc2a273882.2.0-beta
[Bug][Connector-V2] Fix the bug that set params by mistake (#2511) (#2513)https://github.com/apache/seatunnel/commit/ead3d68b0e2.2.0-beta
[Improve][Connector-V2] Http source support user-defined schema (#2439)https://github.com/apache/seatunnel/commit/793933b6b82.2.0-beta
[Feature][Connector-V2] Add Enterprise Wechat sink connector (#2412)https://github.com/apache/seatunnel/commit/3e200e0a382.2.0-beta
[Improve][Connector-V2] Format SeaTunnelRow use seatunnel-format-json (#2435)https://github.com/apache/seatunnel/commit/e4e8f7fbff2.2.0-beta
[Improve][Connector-V2] Make the attribute of http-connector from private to protected (#2418)https://github.com/apache/seatunnel/commit/f3b00ef6962.2.0-beta
[Feature][Connector-V2] Add feishu sink (#2381)https://github.com/apache/seatunnel/commit/0fec8ca4382.2.0-beta
[Feature][Connector-V2] Add http sink(Webhook) (#2348)https://github.com/apache/seatunnel/commit/4b7207490a2.2.0-beta
[Improve][Http Connector-V2-Source] Refactor the code and make code more clearly (#2322)https://github.com/apache/seatunnel/commit/a9a797ad852.2.0-beta
[Improve][Connector-V2] Fix the log information (#2317)https://github.com/apache/seatunnel/commit/736983a7082.2.0-beta
[Improve][Connector-V2] Http client provider improve (#2312)https://github.com/apache/seatunnel/commit/cc950007c82.2.0-beta
[Improve][Connector-V2] Fix 'Singleton' word error (#2309)https://github.com/apache/seatunnel/commit/12ebcb4a0d2.2.0-beta
[api-draft][Optimize] Optimize module name (#2062)https://github.com/apache/seatunnel/commit/f79e3112b12.2.0-beta