zoukankan      html  css  js  c++  java
  • FastAPI Response(二) 直接返回Response对象

    作者:麦克煎蛋   出处:https://www.cnblogs.com/mazhiyong/ 转载请保留这段声明,谢谢!

    在FastAPI路径操作中,我们通常直接返回以下数据类型:dict,list,Pydantic模型,数据库模型以及其他数据类型。

    FastAPI通过jsonable_encoder函数自动把返回数据转换为JSON格式,然后把JSON兼容的数据内容传送给JSONResponse对象并返回给终端用户。

    在有些情况下,我们需要在路径操作中直接返回Response对象,这样我们能有更多的操作灵活性,比如自定义头信息、自定义Cookie信息等。

    返回Response

    我们可以直接返回Response或者它的任何子类。 JSONResponse实际上也是Response的子类。

    这个时候FastAPI不会做任何数据转换和数据校验,而是直接返回数据。

    我们具有很大的灵活性,可以返回任何数据类型,重写数据声明或者数据校验。

    我们可以利用jsonable_encoder把数据转换成JSON兼容格式。

    from datetime import datetime
    from typing import Optional
    
    from fastapi import FastAPI
    from fastapi.encoders import jsonable_encoder
    from fastapi.responses import JSONResponse
    from pydantic import BaseModel
    
    
    class Item(BaseModel):
        title: str
        timestamp: datetime
        description: Optional[str] = None
    
    
    app = FastAPI()
    
    
    @app.put("/items/{id}")
    def update_item(id: str, item: Item):
    json_compatible_item_data = jsonable_encoder(item) return JSONResponse(content=json_compatible_item_data)

    返回自定义Response

    我们来看一下如何返回一个自定义的Response,比如返回XML格式的数据。

    from fastapi import FastAPI, Response
    
    app = FastAPI()
    
    
    @app.get("/legacy/")
    def get_legacy_data():
        data = """<?xml version="1.0"?>
        <shampoo>
        <Header>
            Apply shampoo here.
        </Header>
        <Body>
            You'll have to use soap here.
        </Body>
        </shampoo>
        """
        return Response(content=data, media_type="application/xml")
  • 相关阅读:
    在maven工程中使用groovy
    groovy学习1搭建环境
    Android 中运行时权限获取联系人信息 Demo
    Android 拍照或相册选择照片进行显示缩放位图 Demo
    Android 热点相关操作
    Android 内嵌 HTML5 并进行交互
    AJAX实现局部刷新
    C#主要用于查询sql的web项目:查询以及页面显示数据非常缓慢的改进方案
    配置和读取web.config数据库
    web项目在服务器IIS7上的部署:达到内部网可以通过输入网页直接访问的效果
  • 原文地址:https://www.cnblogs.com/mazhiyong/p/13279543.html
Copyright © 2011-2022 走看看