Files
LabelChange-server/InterfaceDocument.md
2026-06-01 16:30:29 +08:00

6.9 KiB
Raw Permalink Blame History

标签替换服务接口文档

1. 接口概述

本文档描述了标签替换服务提供的RESTful API接口包括接口地址、请求参数、响应格式和示例等信息。所有接口均遵循RESTful设计原则使用JSON格式进行数据交换。

2. 接口列表

接口名称 接口地址 请求方法 功能描述
标签替换 /api/Tag/replace POST 替换文本中的标签变量
物流消息解析 /api/Tag/logistics-parse POST 解析物流接口消息
标签替换请求处理 /api/Tag/label-replace POST 处理标签替换请求

3. 标签替换接口

3.1 接口地址

POST /api/Tag/replace

3.2 请求参数

请求体 (JSON格式):

参数名 类型 必填 描述
Id string 请求ID
Text string 包含标签的文本
Variables Dictionary<string, string> 标签变量键值对

请求示例:

{
  "Id": "request-123",
  "Text": "Hello {name}, welcome to {company}!",
  "Variables": {
    "name": "张三",
    "company": "标签替换服务"
  }
}

3.3 响应参数

响应体 (JSON格式):

参数名 类型 描述
status string 请求状态ok表示成功error表示失败
timestamp datetime 响应时间戳
input string 输入文本
variables Dictionary<string, string> 标签变量
result string 替换后的文本

响应示例 (成功):

{
  "status": "ok",
  "timestamp": "2026-01-16T08:30:00Z",
  "input": "Hello {name}, welcome to {company}!",
  "variables": {
    "name": "张三",
    "company": "标签替换服务"
  },
  "result": "Hello 张三, welcome to 标签替换服务!"
}

响应示例 (失败):

{
  "status": "error",
  "message": "请求处理失败"
}

4. 物流消息解析接口

4.1 接口地址

POST /api/Tag/logistics-parse

4.2 请求参数

请求体 (JSON格式):

参数名 类型 必填 描述
Id string 请求ID
RequestType string 请求类型
LogisticsInterface string 物流接口消息内容

请求示例:

{
  "Id": "logistics-123",
  "RequestType": "order",
  "LogisticsInterface": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<orderInfo>\n  <orderNo>ORD-20260116-001</orderNo>\n  <consignee>李四</consignee>\n  <phone>13800138000</phone>\n  <address>北京市朝阳区</address>\n</orderInfo>"
}

4.3 响应参数

响应体 (JSON格式):

参数名 类型 描述
status string 请求状态ok表示成功error表示失败
timestamp datetime 响应时间戳
requestId string 请求ID
requestType string 请求类型
parsedData Dictionary<string, string> 解析后的物流数据

响应示例 (成功):

{
  "status": "ok",
  "timestamp": "2026-01-16T08:45:00Z",
  "requestId": "logistics-123",
  "requestType": "order",
  "parsedData": {
    "orderNo": "ORD-20260116-001",
    "consignee": "李四",
    "phone": "13800138000",
    "address": "北京市朝阳区"
  }
}

响应示例 (失败):

{
  "status": "error",
  "message": "物流接口消息不能为空"
}

5. 标签替换请求处理接口

5.1 接口地址

POST /api/Tag/label-replace

5.2 请求头

头名称 类型 必填 描述
customer_code string 客户代码
api_key string API密钥

5.3 请求参数

请求体 (JSON格式):

参数名 类型 必填 描述
BillOfLadingNumber string 提单号
MasterPackageNumber string 大包号
ReferenceNumber string 参考号(一般表示订单号)
NeutralWaybillNumber string 中性面单单号
FinalMileTrackingNumber string 尾程跟踪单号
Label string 标签内容一般为PDF可能是base64或其他格式
ReplaceStatus string 换单状态Y表示正常换单N表示冻结换单

请求示例:

{
  "BillOfLadingNumber": "BL-2026-001",
  "MasterPackageNumber": "MP-2026-001",
  "ReferenceNumber": "REF-2026-001",
  "NeutralWaybillNumber": "NW-20260116-0001",
  "FinalMileTrackingNumber": "FM-20260116-0001",
  "Label": "base64 encoded PDF content...",
  "ReplaceStatus": "Y"
}

5.4 响应参数

响应体 (JSON格式):

参数名 类型 描述
Status string 请求状态ok表示成功error表示失败
Timestamp datetime 响应时间戳
Id int 记录ID
NeutralWaybillNumber string 中性面单单号
ReplaceStatus string 换单状态
LabelReplaced bool 是否成功换单
Message string 操作消息
ErrorDetails string 错误详情仅状态为error时有效

响应示例 (成功):

{
  "Status": "ok",
  "Timestamp": "2026-01-16T09:00:00Z",
  "Id": 1001,
  "NeutralWaybillNumber": "NW-20260116-0001",
  "ReplaceStatus": "Y",
  "LabelReplaced": true,
  "Message": "标签替换成功"
}

响应示例 (失败):

{
  "Status": "error",
  "Timestamp": "2026-01-16T09:00:00Z",
  "NeutralWaybillNumber": "NW-20260116-0001",
  "ReplaceStatus": null,
  "LabelReplaced": false,
  "Message": "Invalid API credentials",
  "ErrorDetails": "API密钥验证失败"
}

6. 错误码说明

错误码 HTTP状态码 错误信息 说明
400 400 Bad Request 请求参数错误或格式不正确
401 401 Unauthorized API密钥验证失败
500 500 Internal Server Error 服务器内部错误

7. 调用示例

7.1 使用cURL调用标签替换接口

curl -X POST -H "Content-Type: application/json" -d '{"Text": "Hello {name}!", "Variables": {"name": "张三"}}' http://localhost:5000/api/Tag/replace

7.2 使用Python调用标签替换请求处理接口

import requests
import json

url = "http://localhost:5000/api/Tag/label-replace"
headers = {
    "Content-Type": "application/json",
    "customer_code": "customer-001",
    "api_key": "your-api-key"
}

payload = {
    "NeutralWaybillNumber": "NW-20260116-0001",
    "Label": "base64 encoded PDF content..."
}

response = requests.post(url, headers=headers, data=json.dumps(payload))
print(response.json())

8. 接口调用限制

  • 每个API密钥的调用频率限制为1000次/分钟
  • 每个请求的最大大小限制为10MB
  • 对于大量数据的处理,建议使用批量接口(如果提供)

9. 文档版本控制

版本 更新日期 更新内容 更新人
1.0 2026-01-16 初始版本 API文档团队