本文将使用FastAPI开源框架,实现删除帖子的Python服务。
一、删除帖子服务
定义变量一个字典变量 discussion_posts,表明帖子列表:
# 帖子列表
discussion_posts = dict()
下面这段 FastAPI 代码定义了一个用于删除讨论帖子的 HTTP DELETE 请求处理函数。
@app.delete("/ch01/discussion/posts/remove/{username}")
def delete_discussion(username: str, id: UUID):
if valid_users.get(username) is None:
return {"message": "用户不存在"}
elif discussion_posts.get(id) is None:
return {"message": "帖子不存在"}
else:
del discussion_posts[id]
return {"message": "帖子已删除"}
delete_discussion函数接受两个参数:username(一个字符串类型,从 URL 路径中获取)和 id(一个 UUID 类型,从请求体或查询参数中获取)。
检查 valid_users 字典中是否存在键为 username 的条目。如果不存在,说明用户不存在。用户不存在,函数返回一个包含消息 “用户不存在” 的 JSON 响应。
如果用户存在,代码接着检查 discussion_posts 字典中是否存在键为 id 的帖子。如果不存在,说明帖子不存在。帖子不存在,函数返回一个包含消息 “帖子不存在” 的 JSON 响应。
如果用户存在且帖子也存在,从 discussion_posts 字典中删除键为 id 的帖子条目。删除帖子后,函数返回一个包含消息 “帖子已删除” 的 JSON 响应。
二、启动应用
通过POSTMAN发起DELETE请求:
localhost:8000/ch01/discussion/posts/remove/lily?id=556215C3-AFBB-B841-48B6-7DFC81CED04B

三、OpenAPI dashboard
一个好的做法是,所有URL 都以一样的顶级基本路径开始,例如 /ch01,然后在到达各自的子目录时有所不同。在运行 uvicorn 服务器后,我们可以通过访问文档 URL(
http://localhost:8000/docs) 来检查和验证我们的所有 URL 是否有效并正在运行。
如图所示显示一个OpenAPI dashboard,列出该应用创建的所有API方法:

选择其他一个端点,如/ch01/index,可以在该页面发起模拟请求:

#冬日生活打卡季##文章首发挑战赛#
