# 标签替换服务接口文档 ## 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 | 是 | 标签变量键值对 | **请求示例:** ```json { "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 | 标签变量 | | result | string | 替换后的文本 | **响应示例 (成功):** ```json { "status": "ok", "timestamp": "2026-01-16T08:30:00Z", "input": "Hello {name}, welcome to {company}!", "variables": { "name": "张三", "company": "标签替换服务" }, "result": "Hello 张三, welcome to 标签替换服务!" } ``` **响应示例 (失败):** ```json { "status": "error", "message": "请求处理失败" } ``` ## 4. 物流消息解析接口 ### 4.1 接口地址 ``` POST /api/Tag/logistics-parse ``` ### 4.2 请求参数 **请求体 (JSON格式):** | 参数名 | 类型 | 必填 | 描述 | |--------|------|------|------| | Id | string | 否 | 请求ID | | RequestType | string | 是 | 请求类型 | | LogisticsInterface | string | 是 | 物流接口消息内容 | **请求示例:** ```json { "Id": "logistics-123", "RequestType": "order", "LogisticsInterface": "\n\n ORD-20260116-001\n 李四\n 13800138000\n
北京市朝阳区
\n
" } ``` ### 4.3 响应参数 **响应体 (JSON格式):** | 参数名 | 类型 | 描述 | |--------|------|------| | status | string | 请求状态,ok表示成功,error表示失败 | | timestamp | datetime | 响应时间戳 | | requestId | string | 请求ID | | requestType | string | 请求类型 | | parsedData | Dictionary | 解析后的物流数据 | **响应示例 (成功):** ```json { "status": "ok", "timestamp": "2026-01-16T08:45:00Z", "requestId": "logistics-123", "requestType": "order", "parsedData": { "orderNo": "ORD-20260116-001", "consignee": "李四", "phone": "13800138000", "address": "北京市朝阳区" } } ``` **响应示例 (失败):** ```json { "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表示冻结换单) | **请求示例:** ```json { "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时有效) | **响应示例 (成功):** ```json { "Status": "ok", "Timestamp": "2026-01-16T09:00:00Z", "Id": 1001, "NeutralWaybillNumber": "NW-20260116-0001", "ReplaceStatus": "Y", "LabelReplaced": true, "Message": "标签替换成功" } ``` **响应示例 (失败):** ```json { "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调用标签替换接口 ```bash curl -X POST -H "Content-Type: application/json" -d '{"Text": "Hello {name}!", "Variables": {"name": "张三"}}' http://localhost:5000/api/Tag/replace ``` ### 7.2 使用Python调用标签替换请求处理接口 ```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文档团队 |