Appearance
单个句子语法分析 API 文档
概述
该 API 端点用于分析单个句子的语法结构。它返回句子的语法成分,包括句子类型、主语、谓语、状语等详细信息。
输入JSON
json
{
"type": "grammar_analysis",
"text": "I am a student."
}
请求说明
- 请求方法: POST
- 请求URL:
/analyze_sentence
- 请求头:
Content-Type
:application/json
X-API-Key
: 您的 API 密钥X-Timestamp
: 当前时间戳(秒)X-Signature
: 请求签名
签名生成
签名用于验证请求的完整性。生成方法如下:
- 将
timestamp
和请求体的 JSON 字符串拼接。 - 使用 HMAC-SHA256 算法和您的 API 密钥对拼接字符串进行加密。
- 将结果转换为十六进制字符串。
响应JSON
json
{
"step": "grammar_analysis",
"data": {
"sentence_analysis": [
{
"index": 1,
"type": "简单句",
"text": "I am a student.",
"position": [0, 4],
"elements": [
{
"type": "主语",
"text": "I",
"elements": []
},
{
"type": "谓语",
"text": "am",
"elements": []
},
{
"type": "表语",
"text": "a student",
"elements": [
{
"type": "限定词",
"text": "a",
"position": [2, 3]
}
]
}
]
}
]
},
"status": "success",
"error": null
}
错误处理
- 如果请求缺少
text
字段,返回 400 错误。 - 如果请求超时(超过 15 秒),返回超时错误信息。
- 其他错误将返回通用错误信息。
注意事项
- 确保 API 密钥正确无误。
- 确保请求体格式正确。
- 确保服务器正在运行并可访问。
调用示例
Python 示例代码
python
import requests
import json
import time
import hmac
import hashlib
from typing import Dict, Any
# 测试用例数据
sentence_data = {
"text": "The cat sleeps on the mat.",
"type": "grammar_analysis"
}
def generate_signature(api_key: str, timestamp: str, body: str) -> str:
"""生成请求签名"""
return hmac.new(
api_key.encode('utf-8'),
f"{timestamp}{body}".encode('utf-8'),
hashlib.sha256
).hexdigest()
def analyze_sentence(input_data: Dict[str, Any]) -> None:
"""
调用句子分析API并处理响应
Args:
input_data: 包含句子文本和类型的字典
"""
# API配置
url = 'https://hexeltsiting-fc-kuapjgzhvy.cn-hangzhou.fcapp.run/analyze_sentence'
api_key = 'YOUR_API_KEY' # 测试用API密钥
timestamp = str(int(time.time()))
# 使用确定的序列化方式
body = json.dumps(input_data, ensure_ascii=False, separators=(',', ':'))
# 生成签名
signature = generate_signature(api_key, timestamp, body)
headers = {
'Content-Type': 'application/json',
'X-API-Key': api_key,
'X-Timestamp': timestamp,
'X-Signature': signature
}
try:
print("发送请求到服务器...")
print(f"请求数据: {json.dumps(input_data, ensure_ascii=False, indent=2)}")
# 发送请求
response = requests.post(
url=url,
headers=headers,
data=body.encode('utf-8'),
stream=True
)
print(f"\n响应状态: {response.status_code}")
if response.status_code == 200:
print("\n处理响应流:")
print("-" * 50)
for line in response.iter_lines(decode_unicode=True):
if line.startswith('data: '):
try:
# 解析SSE数据
json_data = line[6:] # 移除 'data: ' 前缀
response_json = json.loads(json_data)
pretty_response = json.dumps(
response_json,
ensure_ascii=False,
indent=2
)
print(f"\n接收到的数据:\n{pretty_response}")
print("-" * 50)
except json.JSONDecodeError as e:
print(f"JSON解析错误: {e}")
print(f"原始数据: {json_data}")
else:
print(f"请求失败,状态码: {response.status_code}")
print(f"错误信息: {response.text}")
except requests.exceptions.ConnectionError:
print("连接错误: 请确保服务器正在运行")
except Exception as e:
print(f"意外错误: {str(e)}")
def main():
"""主函数"""
print("开始句子分析测试...")
analyze_sentence(sentence_data)
if __name__ == "__main__":
main()
cURL 示例
bash
curl -X POST 'https://hexeltsiting-fc-kuapjgzhvy.cn-hangzhou.fcapp.run/analyze_sentence' \
-H 'Content-Type: application/json' \
-H 'X-API-Key: your-api-key' \
-H "X-Timestamp: $TIMESTAMP" \
-H 'X-Signature: calculated-signature' \
-d '{
"text": "The cat sleeps on the mat.",
"type": "grammar_analysis"
}'
注意事项
- 请求必须使用 HTTP/1.1 或更高版本
- 客户端需要支持 SSE (Server-Sent Events) 接收流式响应
- 建议设置合理的超时时间(15秒)
- 签名计算时注意保持请求体的一致性
- 所有文本内容必须使用 UTF-8 编码