首页 > 其他分享 >FastAPI学习-19.response 参数-修改状态码

FastAPI学习-19.response 参数-修改状态码

时间:2023-09-17 11:12:05浏览次数:65  
标签:status task code 19 FastAPI id tasks response

前言

假设你想默认返回一个HTTP状态码为“OK”200
但如果数据不存在,你想创建它,并返回一个HTTP状态码为“CREATED”201

但你仍然希望能够使用response_model过滤和转换你返回的数据。
对于这些情况,你可以使用一个response`参数。

使用 response 参数

status_code 设置默认状态码

from fastapi import FastAPI, Response, status

app = FastAPI()

tasks = {"foo": "Listen to the Bar Fighters"}


@app.put("/get-or-create-task/{task_id}", status_code=200)
def get_or_create_task(task_id: str, response: Response):
    if task_id not in tasks:
        tasks[task_id] = "This didn't exist before"
        response.status_code = status.HTTP_201_CREATED
    return tasks[task_id]

然后你可以像平常一样返回任何你需要的对象(例如一个dict或者一个数据库模型)。如果你声明了一个response_model,它仍然会被用来过滤和转换你返回的对象。

FastAPI将使用这个临时响应来提取状态码(也包括cookies和头部),并将它们放入包含你返回的值的最终响应中,该响应由任何response_model过滤。

返回Response 对象

也可以直接返回 Respouse 对象

from fastapi import Response, status  
  
  
tasks = {"foo": "Listen to the Bar Fighters"}  
  
  
@app.put("/task/{task_id}", status_code=200)  
def get_or_create_task(task_id: str):  
    if task_id == '2':  
        return Response('{"msg": "ok"}', status_code=202, media_type='application/json')  
    return tasks[task_id]

测试

PUT http://127.0.0.1:8000/task/2 HTTP/1.1
User-Agent: Fiddler
Host: 127.0.0.1:8000
Content-Type: application/json
Content-Length: 0


HTTP/1.1 202 Accepted
date: Sun, 17 Sep 2023 02:11:46 GMT
server: uvicorn
content-length: 13
content-type: application/json

{"msg": "ok"}

标签:status,task,code,19,FastAPI,id,tasks,response
From: https://www.cnblogs.com/yoyoketang/p/17707968.html

相关文章

  • FastAPI学习-21.response 参数-设置响应Cookies
    前言可以在 路径函数 中定义一个类型为 Response的参数,这样你就可以在这个临时响应对象中设置cookie了。response参数设置cookiesfromfastapiimportFastAPI,Responseapp=FastAPI()@app.post("/cookie-and-object/")defcreate_cookie(response:Response):......
  • FastAPI学习-20.response 参数-设置响应头部
    前言你可以在你的_路径操作函数_中声明一个Response类型的参数。设置响应头部你可以在这个_临时_响应对象中设置头部fromfastapiimportFastAPI,Responseapp=FastAPI()@app.get("/headers-and-object/")defget_headers(response:Response):response.headers......
  • Visual Studio 2019调试时不显示变量信息
    具体操作: 测试:  完美解决。......
  • 2018-2019 ACM-ICPC Brazil Subregional Programming Contest
    B.Marbles题解显然如果存在棋子位于\((x,x)\),那么一定先手必胜容易发现必败态位于\((1,2)\)和\((2,1)\),那么我们可以通过\(sg\)函数暴力打表得到并且玩家一定不会将棋子移动至\((0,i),(i,0),(i,i)\)这三种情况上,因为谁移动到这些位置,对手一定处于必胜态intn,f[N][......
  • LC每日一题 198.打家劫舍
    你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内......
  • P1009 [NOIP1998 普及组] 阶乘之和
    题目描述用高精度计算出 S=1!+2!+3!+\cdots+n!S=1!+2!+3!+⋯+n!(n\le50n≤50)。其中 ! 表示阶乘,定义为 n!=n\times(n-1)\times(n-2)\times\cdots\times1n!=n×(n−1)×(n−2)×⋯×1。例如,5!=5\times4\times3\times2\times1=1205!=5×4×3×2×1=......
  • FastAPI学习-14. JSONResponse 返回JSON内容
    当你创建一个 FastAPI 路径操作 时,你可以正常返回以下任意一种数据:dict,list,Pydantic模型,数据库模型等等。FastAPI 默认会使用 jsonable_encoder 将这些类型的返回值转换成JSON格式,默认情况下会以content-type:application/json格式返回在有些情况下,我们需要在路径操......
  • 【线段树合并、虚树】P5327 [ZJOI2019] 语言
    终于1kAC了家人,感动吧。贺了很久,很累。前置题目:P3320[SDOI2015]寻宝游戏虚树的边权和:\[\sumdep_{a_x}-\sum_{x<n}dep_{a_x,a_{x+1}}-dep_{a_{1},a_{n}}\]考虑转化贡献,求过该点的链的并,最后再除以二即可。那么我们可以考虑维护以该点的子树的所有关键点以及......
  • vs 远程调试工具2019 2020 ,visual studio
    https://learn.microsoft.com/en-us/visualstudio/debugger/remote-debugging?view=vs-2022#download-and-install-the-remote-tools这个是唯一的方法,如果是非最新的版本,就必须这样这是具体vs2019远程工具下载地址https://download.visualstudio.microsoft.com/download......
  • fastapi
    fastapiFastApi官网:https://fastapi.tiangolo.com/zh/-FastAPI是一个用于构建API的现代、快速(高性能)的web框架,使用Python3.6+并基于标准的Python类型提示。-可与NodeJS和Go并肩的极高性能(归功于Starlette和Pydantic)。最快的Pythonweb框架之一。#pip......