当前位置:首页 > 科技  > 软件

简聊Fastapi框架中的OpenAPI规范

来源: 责编: 时间:2024-01-02 17:28:40 397观看
导读OpenAPI规范(也称为Swagger规范),在Fastapi框架中它主要用来定义和文档化API接口。关于OpenAPI规范是一种用于描述和定义Web API的标准化规范。它可以使用JSON或YAML等格式来描述API的各种元数据信息等细节,如接口路径、

OpenAPI规范(也称为Swagger规范),在Fastapi框架中它主要用来定义和文档化API接口。rMd28资讯网——每日最新资讯28at.com

关于OpenAPI规范是一种用于描述和定义Web API的标准化规范。它可以使用JSON或YAML等格式来描述API的各种元数据信息等细节,如接口路径、请求方法、请求和响应的数据结构、参数、错误处理等。rMd28资讯网——每日最新资讯28at.com

通过使用OpenAPI规范,我们可以轻松地生成API文档,并且可以使用各种工具来自动生成客户端代码、进行接口测试等。如Swagger UI,项目启动后就可以查看到具体的路由定义信息,并可以进行调试等。rMd28资讯网——每日最新资讯28at.com

rMd28资讯网——每日最新资讯28at.com

在整个框架应用中主要表现为:我们可以通过使用装饰器和Python类型提示来定义API接口相关信息。框架本身会根据我们定义的一些相关规则信息自动生成OpenAPI文档,并提供一个交互式的API文档页面,可以在其中查看和测试API接口。 这个文档页面基于Swagger UI,它可以根据OpenAPI规范自动生成,并提供了一些方便的功能,比如请求参数的验证和自动生成请求示例等。rMd28资讯网——每日最新资讯28at.com

应用主要场景:

我们可以使用OpenAPI规范来定义接口的各种细节,其中可以包括请求和响应的数据结构、参数、错误处理等信息。这样可以使得我们的API接口更加清晰、易于理解和使用。rMd28资讯网——每日最新资讯28at.com

1.定义应用app对象的元数据

pythonfrom fastapi import FastAPIapp = FastAPI(title="项目标题I", description="项目文档描述", version="1.0.0")

在上面的代码中,主要是通过参数定义为我应用示例对应的以及相关API元数据,例如标题、描述和版本号。rMd28资讯网——每日最新资讯28at.com

2.定义路由的元数据

@app.get("/items/{item_id}", summary="路由标题", description="路由描述说明")def get_item(item_id: int):    return {"item_id": item_id}

在上面的代码中,主要是通过装饰器参数为路由添加元数据,例如摘要和描述信息。 当然还有其他的参数可以传入。rMd28资讯网——每日最新资讯28at.com

3.定义模型的元数据

from pydantic import BaseModelclass Item(BaseModel):    name: str    description: str = Field(..., description="描述信息")

OpenAPI 自定义和扩展

1.示例

在fastapi框架提供了一个openapi的自定义参数,如下代码所示:rMd28资讯网——每日最新资讯28at.com

app.openapi = custom_openapi

基于上面的openapi我就可有针对进行扩展和自定义其他扩展字段信息,如下示例代码:rMd28资讯网——每日最新资讯28at.com

def custom_openapi():    if app.openapi_schema:        return app.openapi_schema    openapi_schema = get_openapi(        title="FastAPIBoilerplate",        version="0.0.1",        summary="FastAPIBoilerplate",        description='框架模板',        routes=app.routes,    )    openapi_schema["info"]["x-logo"] = {        "url": "https:xxxxxxxx"    }    app.openapi_schema = openapi_schema    return app.openapi_schema

如上代码中:我们通过获取app实例对象中已自动生成的 OpenAPI 规范后,在它毒药的 info 对象中添加一个 x-custom 字段。这个字段可以是任何 JSON 兼容的数据,例如字符串、数字、布尔值、列表或字典。如此完成后,当我们访问:rMd28资讯网——每日最新资讯28at.com

http://127.0.0.1:31120/openapi.json

即可获取到如下图所示的结果:rMd28资讯网——每日最新资讯28at.com

rMd28资讯网——每日最新资讯28at.com

当然我们还可以扩展其他的参数项: 如下代码所示:rMd28资讯网——每日最新资讯28at.com

 openapi_schema["info"]["x-custom"] = "自定义数据信息"

2.自定义和扩展作用和说明

一般通过在 OpenAPI 规范中添加额外的、非标准的信息一般可以用于:rMd28资讯网——每日最新资讯28at.com

  • 提供额外的文档信息。
  • 集成其他工具参数信息。
  • 包含额外的元数据。如 API 的版本历史、贡献者列表、相关资源的链接等。

本文链接:http://www.28at.com/showinfo-26-56428-0.html简聊Fastapi框架中的OpenAPI规范

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 面试官:说说JVM内存整体结构?线程私有还是共享的?

下一篇: 老生常谈 C# 开发 Windows 消息循环机制的原理和流程

标签:
  • 热门焦点
  • K60 Pro官方停产 第三方瞬间涨价

    虽然没有官方宣布,但Redmi的一些高管也已经透露了,Redmi K60 Pro已经停产且不会补货,这一切都是为了即将到来的K60 Ultra铺路,属于厂家的正常操作。但有意思的是该机在停产之后
  • 一加Ace2 Pro真机揭晓 钛空灰配色质感拉满

    终于,在经过了几波预热之后,一加Ace2 Pro的外观真机图在网上出现了。还是博主数码闲聊站曝光的,这次的外观设计还是延续了一加11的方案,只是细节上有了调整,例如新加入了钛空灰
  • 5月iOS设备好评榜:iPhone 14仅排第43?

    来到新的一月,安兔兔的各个榜单又重新汇总了数据,像安卓阵营的榜单都有着比较大的变动,不过iOS由于设备的更新换代并没有那么快,所以相对来说变化并不大,特别是iOS好评榜,老款设
  • 《英雄联盟》夏季赛总决赛今日开打!JDG对阵LNG首发名单来了 Knight:准备三连冠

    8月5日消息,今日17:00,《英雄联盟》2023LPL夏季赛总决赛将正式开打,由JDG对阵LNG。对两支队伍来说,这场比赛不仅要争夺夏季赛冠军,更要决定谁才是LPL赛区一
  • 三言两语说透柯里化和反柯里化

    JavaScript中的柯里化(Currying)和反柯里化(Uncurrying)是两种很有用的技术,可以帮助我们写出更加优雅、泛用的函数。本文将首先介绍柯里化和反柯里化的概念、实现原理和应用
  • 得物宠物生意「狂飙」,发力“它经济”

    作者|花花小萌主近日,得物宣布正式上线宠物鉴别,通过得物App内的“在线鉴别”,可找到鉴别宠物的选项。通过上传自家宠物的部位细节,就能收获拥有专业资质认证的得物鉴
  • 大厂卷向扁平化

    来源:新熵作者丨南枝 编辑丨月见大厂职级不香了。俗话说,兵无常势,水无常形,互联网企业调整职级体系并不稀奇。7月13日,淘宝天猫集团启动了近年来最大的人力制度改革,目前已形成一
  • 郭明錤称华为和江淮汽车合作开发问界MPV,定价100万左右、计划明年量产

    8 月 1 日消息,郭明錤今天在 Medium 平台发布博文,称华为正在和江淮汽车合作,开发售价在 100 万元的问界 MPV,预计在 2024 年第 2 季度量产,销量目标为
  • 2022爆款:ROG魔霸6 冰川散热系统持续护航

    喜逢开学季,各大商家开始推出自己的新产品,进行打折促销活动。对于忠实的端游爱好者来说,能够拥有一款梦寐以求的笔记本电脑是一件十分开心的事。但是现在的
Top