网站页眉设计,wordpress编码修改,做直播网站需要学什么软件有哪些,属于门户网站的平台有文章目录 第一节#xff1a;FastAPI入门一、FastAPI框架介绍什么是ASGI服务#xff08;WSGI#xff09;1、补充Web开发1#xff09;Web前端开发2#xff09;Web后端开发 二、FastAPI安装1、安装Python虚拟环境2、安装FastAPI 三、第一个FastAPI案例1、访问接口和文档2、接… 文章目录 第一节FastAPI入门一、FastAPI框架介绍什么是ASGI服务WSGI1、补充Web开发1Web前端开发2Web后端开发 二、FastAPI安装1、安装Python虚拟环境2、安装FastAPI 三、第一个FastAPI案例1、访问接口和文档2、接口文档半天打不开的解决3、总结1uvicorn命令说明2app变量3请求路径(路由)4请求方法操作5)路由请求方法 函数的映射6返回响应 四、路由参数1、定义参数的类型2、路由匹配的顺序3、预设值参数 第一节FastAPI入门
一、FastAPI框架介绍
FastAPI是一个现代、快速的Python Web框架用于构建API。它基于Python 3.6的类型提示特性使得代码更加简洁且易于绶护。
关键特性:
快速可与 NodeJS 和 Go 并肩的极高性能归功于 Starlette 和 Pydantic。最快的 Python web 框架之一。
高效编码提高功能开发速度约 200 至 300。
更少 bug减少约 40 的人为开发者导致错误。 智能极佳的编辑器支持。处处皆可自动补全减少调试时间。 简单设计的易于使用和学习阅读文档的时间更短。 简短使代码重复最小化。通过不同的参数声明实现丰富功能。bug 更少。 健壮生产可用级别的代码。还有自动生成的交互式文档。 标准化基于并完全兼容API 的相关开放标准OpenAPI (以前被称为 Swagger) 和 JSON Schema。
FastAPI 站在巨人的肩膀上
Starlette 用于构建 Web 部件Starlette 是一个轻量级的 ASGI 框架和工具包特别适合用来构建高性能的 asyncio 服务.Pydantic 用于数据的操作python 中用于数据接口定义检查与设置管理的库。
什么是ASGI服务WSGI
WSGIWEB SERVER GATEWAY INTERFACEWeb服务器网关接口是一种Web服务器网关接口它是一个Web服务器如NginxuWSGI等服务器与Web应用如Flask框架写的程序通信的一种规范。当前运行在WSGI协议之上的Web框架有BottleFlaskDjango。
ASGI异步网关协议接口 Asynchronous Server Gateway Interface 一个介于网络协议服务和Python应用之间的标准接口能够处理多种通用的协议类型包括HTTPHTTP2和WebSocket。
WSGI和ASGI的区别
WSGI是基于HTTP协议模式的不支持WebSocket而ASGI的诞生则是为了解决Python常用的WSGI不支持当前Web开发中的一些新的协议标准。同时ASGI对于WSGI原有的模式的支持和WebSocket的扩展即ASGI是WSGI的扩展。
1、补充Web开发
Web应用开发主要是建立在B/S架构模式下衍生出来的一系列web应用程序即主要是基于浏览器的应用程序开发这也是web应用程序开发的基础比如淘宝、京东、当当网等。Web开发在近年来随着本身技术的突破以及移动设备的普及基于web领域的开发也出现了明确的岗位职责分工一个web互联网产品中基本上会分为web UI设计、Web前端开发以及web后端开发。
1Web前端开发
Web前端开发用到的编程语言主要有javascript以及伴随有标记性文本语言html和样式渲染方式CSS。以及近年来衍生出来的一批优秀web前端框架使web前端在应用构建方面的效率得到显著提升。另外nodeJs的出现越来越多的web前端开发人员开始走入服务端编程领域甚至在一些项目中扮演着web全栈开发的角色。
2Web后端开发
Web后端开发主要用到的语言有python、php、java等当然随着nodeJs的兴起也成为近年来服务端开发的另一种选择。
Web应用程序开发是基于浏览器的浏览器本身已经解决了多平台性兼容的问题所以web开发一般是无需考虑跨平台所面临的兼容性问题。但是web开发领域需要解决的有另一类问题那便是多端兼容以及融合的问题虽然web是基于浏览器的没有跨平台的问题但多端的快速发展是web开发领域的新问题即PC端、移动端以及当下比较火热的各类小程序端。
二、FastAPI安装
1、安装Python虚拟环境
为什么要使用虚拟环境
项目部署时直接导出项目对应的环境中的库就可以了同时开发多个项目各自项目使用的python版本不同譬如一个是python2另一个是python3那么需要来回的切换python版本当你同时开发多个项目时特别是多个项目使用同一个库譬如django但是各自项目使用的django的版本不一致时那么你在开发这些项目时需要来回的卸载和安装不同的版本因为同一个python环境中同名的库只能有一个版本。
虚拟环境的安装步骤 安装好python环境 安装虚拟环境库在cmd中输入 pip install virtualenv 创建虚拟环境在cmd中切换到需要创建虚拟环境的目录下执行 virtualenv env_name 激活虚拟环境在cmd中进入到 第三步创建的 env_name/Scripts 目录下执行 activate执行成功后在cmd中当前输入行前面会有 (env_name) 的前缀 在当前状态下使用 pip 就是在虚拟环境中安装第三方库了 退出虚拟环境cmd中输入 deactivate2、安装FastAPI
需要安装所有的可选依赖及对应功能包括了 uvicorn你可以将其用作运行代码的服务器。
pip install fastapi[all] -i https://pypi.douban.com/simple/
你也可以分开来安装。
假如你想将应用程序部署到生产环境你可能要执行以下操作
pip install fastapi并且安装 uvicorn来作为服务器
pip install uvicorn[standard]三、第一个FastAPI案例
创建一个main.py
from fastapi import FastAPIapp FastAPI()app.get(/)
def root():return helloapp.get(/hello/{name})
def say_hello(name: str):return {message: fHello {name}}# 可以不要
if __name__ __main__:import uvicornuvicorn.run(app, host127.0.0.1, port8000)1、访问接口和文档
2、接口文档半天打不开的解决
这个接口文档调用了一个 js脚本这个脚本是部署在国外的总之 就是因为这个原因导致我们没法访问了由此我们需要把这个脚本从网上下载下来放到本地把此处调用国外的脚本变成调用我们自己本地的即可。
1下载这些国外服务器的资源到一个static目录中
2复制到项目中
3修改fastapi的源代码
4) 在app中注册static目录
5打开接口文档
3、总结
1uvicorn命令说明
uvicorn main:app 命令含义如下:
mainmain.py 文件一个 Python「模块」。app在 main.py 文件中通过 app FastAPI() 创建的对象。--reload让服务器在更新代码后重新启动。仅在开发时使用该选项。
2app变量
这里的变量 app 会是 FastAPI 类的一个实例 变量名字。这个实例将是创建你所有 API 的主要交互对象。
也可以修改app变量名字
from fastapi import FastAPImy_awesome_api FastAPI()my_awesome_api.get(/)
def root():return {message: Hello World}
3请求路径(路由)
请求路径指的是 URL 中从第一个 / 起的后半部分。所以在一个这样的 URL 中
http://example.com/items/foo
http://127.0.0.1/items/foo那么真正的请求路径路由是/items/foo
在FastAPI中路由的配置是通过: 装饰器 完成的。
4请求方法操作
在 HTTP 协议中你可以使用以下的其中一种或多种请求方法 与每个路径进行通信。
通常使用
POST创建数据。GET读取数据。PUT更新数据。DELETE删除数据。PATCH: 修改单一数据
配置请求方法
app.post()app.put()app.delete()app.get()
以及更少见的
app.options()app.head()app.patch()app.trace()
5)路由请求方法 函数的映射
路径 是 /操作 是 get函数 是位于「装饰器」下方的函数位于 app.get(/) 下方
app.get(/)
def root():return {message: Hello World}6返回响应
from fastapi import FastAPIapp FastAPI()app.get(/)
def root():return {message: Hello World} # 返回响应
你还可以返回一个 dict、list像 str、int 一样的单个值等等。你还可以返回 Pydantic 模型。还有许多其他将会自动转换为 JSON 的对象和模型包括 ORM 对象等。
四、路由参数
你可以使用与 Python 格式化字符串相同的语法来声明路径参数或变量
app.get(/items/{item_id})
def read_item(item_id):return {item_id: item_id}路径参数 item_id 的值将作为参数 item_id 传递给你的函数。所以如果你运行示例并访问 http://127.0.0.1:8000/items/foo将会看到如下响应
{item_id:foo}1、定义参数的类型
你可以使用标准的 Python 类型标注为函数中的路径参数声明类型。
app.get(/items/{item_id})
def read_item(item_id: int):return {item_id: item_id}在这个例子中item_id 被声明为 int 类型。FastAPI 通过上面的类型声明提供了对请求的自动解析。
同时还提供数据校验功能
如果你通过浏览器访问 http://127.0.0.1:8000/items/foo你会看到一个清晰可读的 HTTP 错误
{detail: [{loc: [path,item_id],msg: value is not a valid integer,type: type_error.integer}]
}
因为路径参数 item_id 传入的值为 foo它不是一个 int。
你可以使用同样的类型声明来声明 str、float、bool 以及许多其他的复合数据类型。
2、路由匹配的顺序
由于路由匹配操作是按顺序依次运行的你需要确保路径 /users/me 声明在路径 /users/{user_id}之前
app.get(/users/me)
def read_user_me():return {user_id: the current user}app.get(/users/{user_id})
def read_user(user_id: str):return {user_id: user_id}否则/users/{user_id} 的路径还将与 /users/me 相匹配认为自己正在接收一个值为 me 的 user_id 参数。
3、预设值参数
如果你有一个接收路径参数的路径操作但你希望预先设定可能的有效参数值则可以使用标准的 Python Enum 类型。
Python中的枚举数据类型是指列出有穷集合中的所有元素即一一列举的意思。在Python中枚举可以视为是一种数据类型当一个变量的取值只有几种有限的情况时我们可以将其声明为枚举类型。例如表示周几的这一变量weekday只有七种可能的取值我们就可以将其声明为枚举类型。
from enum import Enum
class Weekday(Enum):monday 1tuesday 2wednesday 3thirsday 4friday 5saturday 6sunday 7print(Weekday.wednesday) # Weekday.wednesday
print(type(Weekday.wednesday)) # enum Weekday
print(Weekday.wednesday.name) # wednesday
print(Weekday.wednesday.value) # 3from enum import Enum
from fastapi import FastAPIclass ModelName(str, Enum):alexnet alexnetresnet resnetlenet lenetapp FastAPI()app.get(/models/{model_name})
async def get_model(model_name: ModelName):if model_name is ModelName.alexnet:return {model_name: model_name, message: Deep Learning FTW!}if model_name.value lenet:return {model_name: model_name, message: LeCNN all the images}return {model_name: model_name, message: Have some residuals} 文章转载自: http://www.morning.mlfmj.cn.gov.cn.mlfmj.cn http://www.morning.sgnjg.cn.gov.cn.sgnjg.cn http://www.morning.hqbk.cn.gov.cn.hqbk.cn http://www.morning.kyzja.com.gov.cn.kyzja.com http://www.morning.fswml.cn.gov.cn.fswml.cn http://www.morning.gbsby.cn.gov.cn.gbsby.cn http://www.morning.mhnxs.cn.gov.cn.mhnxs.cn http://www.morning.pxbrg.cn.gov.cn.pxbrg.cn http://www.morning.pjtnk.cn.gov.cn.pjtnk.cn http://www.morning.ynbyk.cn.gov.cn.ynbyk.cn http://www.morning.mdplm.cn.gov.cn.mdplm.cn http://www.morning.dswtz.cn.gov.cn.dswtz.cn http://www.morning.tlrxp.cn.gov.cn.tlrxp.cn http://www.morning.rxkq.cn.gov.cn.rxkq.cn http://www.morning.dcccl.cn.gov.cn.dcccl.cn http://www.morning.ykwgl.cn.gov.cn.ykwgl.cn http://www.morning.xlndf.cn.gov.cn.xlndf.cn http://www.morning.ntzfl.cn.gov.cn.ntzfl.cn http://www.morning.lrnfn.cn.gov.cn.lrnfn.cn http://www.morning.nmkfy.cn.gov.cn.nmkfy.cn http://www.morning.xgchm.cn.gov.cn.xgchm.cn http://www.morning.qsmch.cn.gov.cn.qsmch.cn http://www.morning.txlnd.cn.gov.cn.txlnd.cn http://www.morning.nlzpj.cn.gov.cn.nlzpj.cn http://www.morning.xylxm.cn.gov.cn.xylxm.cn http://www.morning.zkzjm.cn.gov.cn.zkzjm.cn http://www.morning.pzlhq.cn.gov.cn.pzlhq.cn http://www.morning.jxgyg.cn.gov.cn.jxgyg.cn http://www.morning.yunease.com.gov.cn.yunease.com http://www.morning.pmjw.cn.gov.cn.pmjw.cn http://www.morning.qxltp.cn.gov.cn.qxltp.cn http://www.morning.fypgl.cn.gov.cn.fypgl.cn http://www.morning.kxryg.cn.gov.cn.kxryg.cn http://www.morning.tzkrh.cn.gov.cn.tzkrh.cn http://www.morning.jqswf.cn.gov.cn.jqswf.cn http://www.morning.dtfgr.cn.gov.cn.dtfgr.cn http://www.morning.alive-8.com.gov.cn.alive-8.com http://www.morning.jfnbh.cn.gov.cn.jfnbh.cn http://www.morning.nccqs.cn.gov.cn.nccqs.cn http://www.morning.rmxk.cn.gov.cn.rmxk.cn http://www.morning.fmrrr.cn.gov.cn.fmrrr.cn http://www.morning.rdkt.cn.gov.cn.rdkt.cn http://www.morning.bslkt.cn.gov.cn.bslkt.cn http://www.morning.lcxdm.cn.gov.cn.lcxdm.cn http://www.morning.mumgou.com.gov.cn.mumgou.com http://www.morning.chmcq.cn.gov.cn.chmcq.cn http://www.morning.fewhope.com.gov.cn.fewhope.com http://www.morning.tdxnz.cn.gov.cn.tdxnz.cn http://www.morning.lthpr.cn.gov.cn.lthpr.cn http://www.morning.nhrkc.cn.gov.cn.nhrkc.cn http://www.morning.hlhqs.cn.gov.cn.hlhqs.cn http://www.morning.qpmmg.cn.gov.cn.qpmmg.cn http://www.morning.crxdn.cn.gov.cn.crxdn.cn http://www.morning.zmlbq.cn.gov.cn.zmlbq.cn http://www.morning.tgnwt.cn.gov.cn.tgnwt.cn http://www.morning.lztrt.cn.gov.cn.lztrt.cn http://www.morning.wklyk.cn.gov.cn.wklyk.cn http://www.morning.ttaes.cn.gov.cn.ttaes.cn http://www.morning.jiuyungps.com.gov.cn.jiuyungps.com http://www.morning.lqklf.cn.gov.cn.lqklf.cn http://www.morning.btjyp.cn.gov.cn.btjyp.cn http://www.morning.bswhr.cn.gov.cn.bswhr.cn http://www.morning.qzdxy.cn.gov.cn.qzdxy.cn http://www.morning.snlxb.cn.gov.cn.snlxb.cn http://www.morning.mmxnb.cn.gov.cn.mmxnb.cn http://www.morning.cpkcq.cn.gov.cn.cpkcq.cn http://www.morning.hxxyp.cn.gov.cn.hxxyp.cn http://www.morning.ljbch.cn.gov.cn.ljbch.cn http://www.morning.zwtp.cn.gov.cn.zwtp.cn http://www.morning.gkjnz.cn.gov.cn.gkjnz.cn http://www.morning.qmxsx.cn.gov.cn.qmxsx.cn http://www.morning.ebpz.cn.gov.cn.ebpz.cn http://www.morning.qlwfz.cn.gov.cn.qlwfz.cn http://www.morning.lyhry.cn.gov.cn.lyhry.cn http://www.morning.rxwfg.cn.gov.cn.rxwfg.cn http://www.morning.snktp.cn.gov.cn.snktp.cn http://www.morning.dnpft.cn.gov.cn.dnpft.cn http://www.morning.monstercide.com.gov.cn.monstercide.com http://www.morning.cjsrg.cn.gov.cn.cjsrg.cn http://www.morning.zqdzg.cn.gov.cn.zqdzg.cn