写一个Python接口:发送支付成功短信

文章目录

  • [📌 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 文档

相关推荐
Csvn1 天前
🌟 LangChain 30 天保姆级教程 · Day 13|OutputParser 进阶!让 AI 输出自动转为结构化对象,并支持自动重试!
python·langchain
Wenweno0o1 天前
0基础Go语言Eino框架智能体实战-chatModel
开发语言·后端·golang
chenjingming6661 天前
jmeter线程组设置以及串行和并行设置
java·开发语言·jmeter
cch89181 天前
Python主流框架全解析
开发语言·python
不爱吃炸鸡柳1 天前
C++ STL list 超详细解析:从接口使用到模拟实现
开发语言·c++·list
十五年专注C++开发1 天前
RTTR: 一款MIT 协议开源的 C++ 运行时反射库
开发语言·c++·反射
Momentary_SixthSense1 天前
设计模式之工厂模式
java·开发语言·设计模式
sg_knight1 天前
设计模式实战:状态模式(State)
python·ui·设计模式·状态模式·state
好运的阿财1 天前
process 工具与子agent管理机制详解
网络·人工智能·python·程序人生·ai编程
‎ദ്ദിᵔ.˛.ᵔ₎1 天前
STL 栈 队列
开发语言·c++