文章目录
- [📌 Python 接口示例:发送支付成功短信](#📌 Python 接口示例:发送支付成功短信)
-
- 一、接口定义(给调用方看的)
-
- [1️⃣ 接口信息](#1️⃣ 接口信息)
- [二、HTTP 报文示例(重点)](#二、HTTP 报文示例(重点))
- 三、接口完整实现(FastAPI)
-
- [1️⃣ 安装依赖](#1️⃣ 安装依赖)
- [2️⃣ 完整接口代码(可直接运行)](#2️⃣ 完整接口代码(可直接运行))
- [3️⃣ 启动接口](#3️⃣ 启动接口)
- [四、用 curl 调用接口(对接必备)](#四、用 curl 调用接口(对接必备))
- [五、这个 Python 接口已经具备哪些「真实项目特征」](#五、这个 Python 接口已经具备哪些「真实项目特征」)
Python 接口示例,用的是 FastAPI
📌 Python 接口示例:发送支付成功短信
技术栈 :Python + FastAPI
接口类型 :REST API
数据格式:JSON
一、接口定义(给调用方看的)
1️⃣ 接口信息
| 项目 | 内容 |
|---|---|
| 接口名称 | 发送支付成功短信 |
| URL | /api/sms/send |
| Method | POST |
| Content-Type | application/json |
| 认证方式 | Bearer Token |
二、HTTP 报文示例(重点)
请求报文
http
POST /api/sms/send HTTP/1.1
Host: localhost:8000
Content-Type: application/json
Authorization: Bearer test-token-123
{
"phone": "13800138000",
"templateCode": "PAY_SUCCESS",
"params": {
"orderNo": "ORD202601060001",
"amount": "99.00"
}
}
响应报文(成功)
json
{
"code": 0,
"message": "发送成功",
"data": null
}
三、接口完整实现(FastAPI)
1️⃣ 安装依赖
bash
pip install fastapi uvicorn
2️⃣ 完整接口代码(可直接运行)
python
from fastapi import FastAPI, Header, HTTPException
from pydantic import BaseModel
from typing import Dict, Optional
app = FastAPI(title="SMS Service API")
# ---------- 请求模型 ----------
class SmsSendRequest(BaseModel):
phone: str
templateCode: str
params: Dict[str, str]
# ---------- 统一返回模型 ----------
class ApiResponse(BaseModel):
code: int
message: str
data: Optional[dict] = None
# ---------- 接口实现 ----------
@app.post("/api/sms/send", response_model=ApiResponse)
def send_sms(
request: SmsSendRequest,
authorization: str = Header(None)
):
# 1. 简单鉴权
if not authorization or not authorization.startswith("Bearer "):
raise HTTPException(status_code=401, detail="未授权")
token = authorization.replace("Bearer ", "")
if token != "test-token-123":
raise HTTPException(status_code=403, detail="Token 无效")
# 2. 参数校验(业务级)
if not request.phone:
return ApiResponse(code=1001, message="手机号不能为空")
if request.templateCode != "PAY_SUCCESS":
return ApiResponse(code=1002, message="不支持的模板")
# 3. 模拟发送短信(真实项目这里会调用第三方)
print("=== 发送短信 ===")
print("手机号:", request.phone)
print("模板:", request.templateCode)
print("参数:", request.params)
# 4. 返回成功
return ApiResponse(code=0, message="发送成功")
3️⃣ 启动接口
bash
uvicorn main:app --host 0.0.0.0 --port 8000
启动后访问:
- 👉 接口地址:
http://localhost:8000/api/sms/send - 👉 自动接口文档:
http://localhost:8000/docs
四、用 curl 调用接口(对接必备)
bash
curl -X POST http://localhost:8000/api/sms/send \
-H "Content-Type: application/json" \
-H "Authorization: Bearer test-token-123" \
-d '{
"phone":"13800138000",
"templateCode":"PAY_SUCCESS",
"params":{
"orderNo":"ORD202601060001",
"amount":"99.00"
}
}'
五、这个 Python 接口已经具备哪些「真实项目特征」
标准 REST 风格
Header 鉴权
DTO / 请求模型
统一返回结构
HTTP 状态码 + 业务 code
自动 Swagger 文档