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

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

时间:2023-10-27 12:36:18浏览次数:26  
标签: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://blog.51cto.com/u_15249893/8052668

相关文章

  • FastAPI学习-16.响应状态码 status_code
    前言与指定响应模型的方式相同,你也可以在以下任意的_路径操作_中使用 status_code 参数来声明用于响应的HTTP状态码:@app.get()@app.post()@app.put()@app.delete()响应状态码fromfastapiimportFastAPIapp=FastAPI()@app.post("/items/",status_code=201)asyncdef......
  • FastAPI学习-17.其它响应html,文件,视频或其它
    前言通过我们返回JSON类型的接口会比较多,除了返回JSON格式,还可以响应其它格式的内容JSONResponseContent-Type 会被设置成 application/jsonHTMLResponseContent-Type 会被设置成 text/htmlPlainTextResponse Content-Type 会被设置成text/plainORJSONResponse......
  • FastAPI学习-18.Response 返回 XML 格式
    前言假设你想要返回一个 XML响应。你可以把你的XML内容放到一个字符串中,放到一个 Response 中,然后返回。Response自定义返回可以把XML内容放到一个字符串中,放到一个 Response 中,设置media_type="application/xml"fromfastapiimportFastAPI,Responseapp=FastAPI......
  • FastAPI学习-14. JSONResponse 返回JSON内容
    当你创建一个 FastAPI 路径操作 时,你可以正常返回以下任意一种数据:dict,list,Pydantic模型,数据库模型等等。FastAPI 默认会使用 jsonable_encoder 将这些类型的返回值转换成JSON格式,默认情况下会以content-type:application/json格式返回在有些情况下,我们需要在路径操作......
  • FastAPI学习-15.JSON 编码器 jsonable_encoder
    前言在某些情况下,您可能需要将数据类型(如Pydantic模型)转换为与JSON兼容的数据类型(如dict、list等)。比如,如果您需要将其存储在数据库中。对于这种要求, FastAPI提供了jsonable_encoder()函数。使用jsonable_encoderjsonable_encoder在实际应用场景中,可能需要将数据类型(如:Pydanti......
  • docker: Error response from daemon: Conflict. The container name "/web" is alrea
    问题:docker启动docker容器时报错docker:Errorresponsefromdaemon:Conflict.ThecontainernameisalreadyinusebycontainerYouhavetoremove(orrename)thatcontainertobeabletoreusethatname.解决办法:在此之前已经启动了相同名字的docker容器,Thecontai......
  • 在线问诊 Python、FastAPI、Neo4j — 创建症状节点
    目录症状数据创建节点附学习电子病历中,患者主诉对应的相关检查,得出的诊断以及最后的用药情况。症状一般可以从主诉中提取。症状数据symptom_data.csvCSV中,没有直接一行一个症状,主要想后面将症状=>疾病做关联,最后会在一个Excel中表达所以每行实际对应一个症病,但在创建节点......
  • ABC219 H 区间dp 费用提前计算
    ABC219H跟关路灯很像。很容易注意到我们拿走的只能是一个区间,观察n的范围发现区间dp是个好想法。朴素的想法是定义\(f_{i,j,k,0/1}\)为拿走i到j里面的所有数,走了k秒,现在在i/j的方案数。然后发现k太大了。咱当时的想法是希望优化复杂度,把k去掉结果发现不能保证正确性。......
  • P4198 楼房重建
    P4198楼房重建(RE:题解再改造!!)码#include<bits/stdc++.h>#defineMAXN2000010usingnamespacestd;intn,m;intx[MAXN],y[MAXN],ans[MAXN];doubleK[MAXN];intquery(intp,intl,intr,doublemaxn){if(K[p]<=maxn)return0;if(l==r)returnK[p]>maxn;......
  • 数据平面的故障排查-《Istio最佳实践》第19章
    https://blog.csdn.net/qq_36073886/article/details/1311169791、krew是一个可以轻松使用kubectl插件的工具,类似于apt、dnf或brew等工具。安装过程见链接1。wgethttps://github.com/kubernetes-sigs/krew/releases/latest/download/krew-linux_amd64.tar.gztar-zxvfkrew-linux......