首页 > 其他分享 > FastAPI学习-16.响应状态码 status_code

FastAPI学习-16.响应状态码 status_code

时间:2023-09-17 11:14:55浏览次数:43  
标签:status 状态 code 16 FastAPI app 响应

前言

与指定响应模型的方式相同,你也可以在以下任意的_路径操作_中使用 status_code 参数来声明用于响应的 HTTP 状态码:

  • @app.get()
  • @app.post()
  • @app.put()
  • @app.delete()

响应状态码

from fastapi import FastAPI

app = FastAPI()


@app.post("/items/", status_code=201)
async def create_item(name: str):
    return {"name": name}

注意,status_code 是「装饰器」方法(getpost 等)的一个参数。不像之前的所有参数和请求体,它不属于_路径操作函数_。

status_code 参数接收一个表示 HTTP 状态码的数字。

status_code 也能够接收一个 IntEnum 类型,比如 Python 的 http.HTTPStatus

它将会:

  • 在响应中返回该状态码。
  • 在 OpenAPI 模式中(以及在用户界面中)将其记录为:

![[Pasted image 20230718112653.png]]

一些响应状态码(请参阅下一部分)表示响应没有响应体。
FastAPI 知道这一点,并将生成表明没有响应体的 OpenAPI 文档。

关于 HTTP 状态码

如果你已经了解什么是 HTTP 状态码,请跳到下一部分。

在 HTTP 协议中,你将发送 3 位数的数字状态码作为响应的一部分。

这些状态码有一个识别它们的关联名称,但是重要的还是数字。

简而言之:

  • 100 及以上状态码用于「消息」响应。你很少直接使用它们。具有这些状态代码的响应不能带有响应体。
  • 200 及以上状态码用于「成功」响应。这些是你最常使用的。
    • 200 是默认状态代码,它表示一切「正常」。
    • 另一个例子会是 201,「已创建」。它通常在数据库中创建了一条新记录后使用。
    • 一个特殊的例子是 204,「无内容」。此响应在没有内容返回给客户端时使用,因此该响应不能包含响应体。
  • 300 及以上状态码用于「重定向」。具有这些状态码的响应可能有或者可能没有响应体,但 304「未修改」是个例外,该响应不得含有响应体。
  • 400 及以上状态码用于「客户端错误」响应。这些可能是你第二常使用的类型。
    • 一个例子是 404,用于「未找到」响应。
    • 对于来自客户端的一般错误,你可以只使用 400
  • 500 及以上状态码用于服务器端错误。你几乎永远不会直接使用它们。当你的应用程序代码或服务器中的某些部分出现问题时,它将自动返回这些状态代码之一。

记住名称的捷径

让我们再次看看之前的例子:

@app.post("/items/", status_code=201)

201 是表示「已创建」的状态码。

但是你不必去记住每个代码的含义。

你可以使用来自 fastapi.status 的便捷变量。

from fastapi import FastAPI, status

app = FastAPI()


@app.post("/items/", status_code=status.HTTP_201_CREATED)
async def create_item(name: str):
    return {"name": name}

它们只是一种便捷方式,它们具有同样的数字代码,但是这样使用你就可以使用编辑器的自动补全功能来查找它们:

![[Pasted image 20230916091706.png]]

你也可以使用 from starlette import status
为了给你(即开发者)提供方便,FastAPI 提供了与 starlette.status 完全相同的 fastapi.status。但它直接来自于 Starlette。

总结

响应状态码可以是数字类型,如:201,400
也可以是status.HTTP_201_CREATED

标签:status,状态,code,16,FastAPI,app,响应
From: https://www.cnblogs.com/yoyoketang/p/17707956.html

相关文章

  • 每日总结|9.16-周末随意一点啦~~
    家人们,尊的烦s啦---昨天的总结没写上,本来周五测试嘛,但是后来我下午出去玩啦,欸,,,,,然后作业根本来不及做啦,,,,,,,真的,,无语,,,而且我不喜欢我做的丑东西,我下次我也要准备好模板啥的,搞自卑了,真的是。反正就做这个嘛,没干什么事情 一、 测试题目1、完成《河北省重大技术需求征集》基本信息填报......
  • 【题解】AtCoder-ABC320
    AtCoder-ABC320ALeylandNumber依题意计算。提交记录:Submission-AtCoderAtCoder-ABC320BLongestPalindrome直接\(O(n^2)\)枚举,\(O(n)\)判断。提交记录:Submission-AtCoderAtCoder-ABC320CSlotStrategy2(Easy)不妨将字符串复制三遍,枚举\([0,3m)\)判断。提交......
  • 9.16
    周六:真是美好的假期早上美美睡懒觉,上午下午美美玩游戏导致我晚上写博客园发现今天没有做什么有意义的事没有什么收获下午去了一趟教务处结果那里也不能让我选Java课说让我去科技楼1013号,结果根本没找到这个房间【......
  • junk_code
    moectf{y0u_rem0v3d_th3_junk_c0d3!!!}junk_code有两个加了花指令的函数去除花指令D键将其变成数据将E8处的跳转指令直接nop掉按C键回到代码对函数头按P键,重新构建函数 然后F5重新生成函数另一个函数也是同样的操作,得到如下函数根据数组的值进行判断 ......
  • 9月16号总结
    今天学了springboot的初级内容加载pom文件时产生了下面的问题,<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId>......
  • 2023.9.16
    今天想挨个找学长把我的之前的问题问清楚的,但是学长今天好像都有事,本来已经打算去问施润杰学长,结果在这之前我自己差不多把最关键的几个小问题想明白了,emmmm明天会继续到格式化字符串最后一个部分的学习,这些天加快速度,争取竞赛时能取得相较前几次较好的成绩。......
  • 2023年9月16日
    效果HTML<!DOCTYPEhtml><html> <head> <metacharset="utf-8"/> <title>2023年9月16日</title> <linkrel="stylesheet"href="./css/index_style.css"> </head> <body> <d......
  • 字符串杂题20230916
    今天的题目没有那么难,挑一些不蛮板的题目来讲。建议不要光看,打个草稿画一下图,这个是解字符串题的关键。[POI2005]SZA-Template题目描述你打算在纸上印一串字母。为了完成这项工作,你决定刻一个印章。印章每使用一次,就会将印章上的所有字母印到纸上。同一个位置的相同字符可以......
  • 20230916打卡
    我今天和室友一起点了披萨吃,这是我第一次尝试披萨。披萨非常好吃,我们很快就把它吃完了。下午,我花了一些时间玩原神游戏。原神超级好玩,我喜欢其中的角色和探索剧情。在游戏中,我可以放松自己,探索美丽的游戏世界,并与其他玩家一起完成任务和挑战。原神给我带来了许多乐趣和刺激。晚......
  • 9.16 闲话
    舒伦提:Solution:答案是\(k\)取全体奇数.先把\(n\)表示成唯一分解形式\(n=p_1^{\alpha_1}\dotsp_m^{\alpha_m}\),转化为:\[\prod\frac{2\alpha_i+1}{\alpha_i+1}=k\]因为每个分数的分子是奇数,所以显然\(k\)一定是奇数.所以现在要试图构造一个奇数,显然要归纳.假设......