前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >FastAPI 学习之路(二十三)

FastAPI 学习之路(二十三)

作者头像
雷子
发布2021-08-25 10:12:18
3710
发布2021-08-25 10:12:18
举报

FastAPI 系列文章:

FastAPI 学习之路(一)

FastAPI 学习之路(二)

FastAPI 学习之路(三)

FastAPI 学习之路(四)使用pydantic模型做请求体

FastAPI 学习之路(五)

FastAPI 学习之路(六)

FastAPI 学习之路(七)

FastAPI 学习之路(八)

FastAPI 学习之路(九)

FastAPI 学习之路(十)

FastAPI 学习之路(十一)

FastAPI 学习之路(十二)额外数据类型

FastAPI 学习之路(十三)Cookie 参数,Header参数

FastAPI 学习之路(十四)响应模型

FastAPI 学习之路(十五)响应状态码

FastAPI 学习之路(十六)Form表单

FastAPI 学习之路(十七)上传文件

FastAPI 学习之路(十八)表单与文件

FastAPI 学习之路(十九)处理错误

FastAPI 学习之路(二十)接口文档配置相关

FastAPI 学习之路(二十一)请求体 - 更新数据

FastAPI 学习之路(二十二)

前言

我们之前分享依赖项,我们这次还是继续分享依赖。我们本次看的是用类作为依赖的注入。

正文

我们先看一个简单的demo。

代码语言:javascript
复制

from typing import Optional

from fastapi import Depends, FastAPI

app = FastAPI()


fake_items_db = [{"city": "beijing"}, {"city": "shanghai"},
                 {"city": "heze"}]


class CommonQueryParams:
    def __init__(self, desc: Optional[str] = None, skip: int = 0, limit: int = 100):
        self.desc = desc
        self.skip = skip
        self.limit = limit
@app.get("/items/")
def read_items(commons: CommonQueryParams = Depends(CommonQueryParams)):
    response = {}
    if commons.desc:
        response.update({"desc": commons.desc})
    items = fake_items_db[commons.skip : commons.skip + commons.limit]
    response.update({"items": items})
    return response

我们去实现了一个类,然后这个类呢,初始化方法方法,我们有介绍,跳过,限制等条件呢,我们在实现接口的时候,去注入下这个类,我们看下结果;

那么我们看下,我们当增加下,我们注入的类里面需要的参数的时候,看下接口返回的

其实用类实现也没有那么难,有固定的格式。

我们只需要按照这个格式去实现即可。

我们有两种写法

代码语言:javascript
复制
1.commons: CommonQueryParams = Depends(CommonQueryParams)
2.commons: CommonQueryParams = Depends()

实现的效果都是一样的。

方法二的写法更加简单,我们去看下接口文档如何展示的。

正常也会带着这些选填的参数。

我们之前文章有分享过选填必填的参数,我们现在的是否也可以使用呢,我们可以看下,我们必须在依赖注入的时候,必须需要参数desc,我们看下是否可以。

代码语言:javascript
复制

from fastapi import Depends, FastAPI

app = FastAPI()


fake_items_db = [{"city": "beijing"}, {"city": "shanghai"},
                 {"city": "heze"}]


class CommonQueryParams:

    def __init__(self, desc: str , skip: int = 0, limit: int = 100):

        self.desc = desc

        self.skip = skip

        self.limit = limit
@app.get("/items/")
def read_items(commons: CommonQueryParams = Depends()):
    response = {}
    if commons.desc:
        response.update({"desc": commons.desc})
    items = fake_items_db[commons.skip : commons.skip + commons.limit]
    response.update({"items": items})
    return response

我们看下,我们不填写的时候,是否是给我们返回的异常,我们预期是接口返回异常

正常填写呢

可以正常返回。那么我们用python的类去实现依赖,其实也是很简单的。之前的一些方法都是可以正常的放在类里面去实现的。

后记

发现问题,解决问题。遇到问题,慢慢解决问题即可。

欢迎关注雷子说测试开发,后续将会持续为大家分享更多的技术知识

如果你有问题可以留言或者加我微信:952943386。2021,一起牛转钱坤,一起牛逼。

如果觉得这篇文章还不错,来个【分享、点赞、在看】三连吧,让更多的人也看到~

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-08-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 雷子说测试开发 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • FastAPI 系列文章:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档