当前位置: 首页 > news >正文

中国建设网官方网站app西安网站建设模板

中国建设网官方网站app,西安网站建设模板,青建设厅官方网站,无备案网站广告如何做fastapi框架 fastapi#xff0c;一个用于构建 API 的现代、快速#xff08;高性能#xff09;的web框架。 fastapi是建立在Starlette和Pydantic基础上的#xff0c;Pydantic是一个基于Python类型提示来定义数据验证、序列化和文档的库。Starlette是一种轻量级的ASGI框架/工… fastapi框架 fastapi一个用于构建 API 的现代、快速高性能的web框架。 fastapi是建立在Starlette和Pydantic基础上的Pydantic是一个基于Python类型提示来定义数据验证、序列化和文档的库。Starlette是一种轻量级的ASGI框架/工具包是构建高性能Asyncio服务的理性选择。 快速可与 NodeJS 和 Go 比肩的极高性能归功于 Starlette 和 Pydantic是最快的 Python web 框架之一。高效编码提高功能开发速度约 200 至 300。更少bug减少约 40 的人为开发者导致错误。智能极佳的编辑器支持。处处皆可自动补全减少调试时间。简单设计的易于使用和学习阅读文档的时间更短。简短使代码重复最小化。通过不同的参数声明实现丰富功能。健壮生产可用级别的代码。还有自动生成的交互式文档。 依赖Python 3.6 及更高版本FastAPI 站在以下巨人的肩膀之上 Starlette 负责 web 部分(Asyncio) Pydantic 负责数据部分(类型提示) FastApi是站在前人肩膀上集成了多种框架的优点的新秀框架。它出现的比较晚2018年底才发布在github上。广泛应用于当前各种前后端分离的项目开发测试运维自动化以及微服务的场景中。 一、预备知识点 1.1、http协议 一、简介 HTTP协议是Hyper Text Transfer Protocol超文本传输协议的缩写,是用于万维网WWW:World Wide Web 服务器与本地浏览器之间传输超文本的传送协议。HTTP是一个属于应用层的面向对象的协议由于其简捷、快速的方式适用于分布式超媒体信息系统。它于1990年提出经过几年的使用与发展得到不断地完善和扩展。HTTP协议工作于客户端-服务端架构为上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。Web服务器根据接收到的请求后向客户端发送响应信息。 二、 http协议特性 三、http请求协议与响应协议 http协议包含由浏览器发送数据到服务器需要遵循的请求协议与服务器发送数据到浏览器需要遵循的请求协议。用于HTTP协议交互的信被为HTTP报文。请求端(客户端)的HTTP报文 做请求报文,响应端(服务器端)的 做响应报文。HTTP报文本身是由多行数据构成的字文本。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XdeG7EuB-1689471141828)(assets/http%E5%8D%8F%E8%AE%AE.png)] 一个完整的URL包括协议、ip、端口、路径、参数 例如 https://www.baidu.com/s?wdyuan 其中https是协议www.baidu.com 是IP端口默认80/s是路径参数是wdyuan 请求方式: get与post请求 GET提交的数据会放在URL之后以?分割URL和传输数据参数之间以相连如EditBook?nametest1id123456. POST方法是把提交的数据放在HTTP包的请求体中.GET提交的数据大小有限制因为浏览器对URL的长度有限制而POST方法提交的数据没有限制 响应状态码状态码的职 是当客户端向服务器端发送请求时, 返回的请求 结果。借助状态码,用户可以知道服务器端是正常 理了请求,还是出 现了 。状态码如200 OK,以3位数字和原因 组成。 1.2、api接口 在开发Web应用中有两种应用模式 前后端不分离[客户端看到的内容和所有界面效果都是由服务端提供出来的。] 前后端分离【把前端的界面效果(htmlcssjs分离到另一个服务端python服务端只需要返回数据即可)】 前端形成一个独立的网站服务端构成一个独立的网站 应用程序编程接口Application Programming InterfaceAPI接口就是应用程序对外提供了一个操作数据的入口这个入口可以是一个函数或类方法也可以是一个url地址或者一个网络地址。当客户端调用这个入口应用程序则会执行对应代码操作给客户端完成相对应的功能。 当然api接口在工作中是比较常见的开发内容有时候我们会调用其他人编写的api接口有时候我们也需要提供api接口给其他人操作。由此就会带来一个问题api接口往往都是一个函数、类方法、或者url或其他网络地址不断是哪一种当api接口编写过程中我们都要考虑一个问题就是这个接口应该怎么编写接口怎么写的更加容易维护和清晰这就需要大家在调用或者编写api接口的时候要有一个明确的编写规范 为了在团队内部形成共识、防止个人习惯差异引起的混乱我们都需要找到一种大家都觉得很好的接口实现规范而且这种规范能够让后端写的接口用途一目了然减少客户端和服务端双方之间的合作成本。 目前市面上大部分公司开发人员使用的接口实现规范主要有restful、RPC。 REST全称是Representational State Transfer中文意思是表述编者注通常译为表征性状态转移。 它首次出现在2000年Roy Fielding的博士论文中。 RESTful是一种专门为Web 开发而定义API接口的设计风格尤其适用于前后端分离的应用模式中。 关键面向资源开发 这种风格的理念认为后端开发任务就是提供数据的对外提供的是数据资源的访问接口所以在定义接口时客户端访问的URL路径就表示这种要操作的数据资源。 而对于数据资源分别使用POST、DELETE、GET、UPDATE等请求动作来表达对数据的增删查改。 请求方法请求地址后端操作POST/student/增加学生GET/student/获取所有学生GET/student/1获取id为1的学生PUT/student/1修改id为1的学生DELETE/student/1删除id为1的学生 restful规范是一种通用的规范不限制语言和开发框架的使用。事实上我们可以使用任何一门语言任何一个框架都可以实现符合restful规范的API接口。 二、quick start 简单案例 安装 你还会需要一个 ASGI 服务器生产环境可以使用 Uvicorn 代码 通过以下命令运行服务器 也可以直接运行 1导入 FastAPI。 2创建一个 app 实例。 3编写一个路径操作装饰器如 app.get(“/”)。 4编写一个路径操作函数如上面的 def root(): … 5定义返回值 6运行开发服务器如 uvicorn main:app --reload 此外fastapi有着非常棒的交互式 API 文档这一点很吸引人。 跳转到 http://127.0.0.1:8000/docs。你将会看到自动生成的交互式 API 文档。 三、路径操作 路径操作装饰器 fastapi支持各种请求方式 路径操作装饰器参数 include_router main.py 与main.py同级目录apps 四、请求与响应 4.1、路径参数 1基本用法 以使用与 Python 格式化字符串相同的语法来声明路径参数或变量 路径参数 user_id 的值将作为参数 user_id 传递给你的函数。 2有类型的路径参数 你可以使用标准的 Python 类型标注为函数中的路径参数声明类型。 在这个例子中user_id 被声明为 int 类型。 这将为你的函数提供编辑器支持包括错误检查、代码补全等等。 3注意顺序 在创建路径操作时你会发现有些情况下路径是固定的。 比如 /users/me我们假设它用来获取关于当前用户的数据. 然后你还可以使用路径 /user/{username} 来通过用户名 获取关于特定用户的数据。 由于路径操作是按顺序依次运行的你需要确保路径 /user/me 声明在路径 /user/{username}之前 否则/user/{username} 的路径还将与 /user/me 相匹配认为自己正在接收一个值为 me 的 username 参数。 4.2、查询参数请求参数 路径函数中声明不属于路径参数的其他函数参数时它们将被自动解释为查询字符串参数就是 url? 之后用分割的 key-value 键值对。 在这个例子中函数参数 city和xl 是可选的并且默认值为 None。 自python3.5开始PEP484为python引入了类型注解(type hints)typing的主要作用有 类型检查防止运行时出现参数、返回值类型不符。作为开发文档附加说明方便使用者调用时传入和返回参数类型。模块加入不会影响程序的运行不会报正式的错误pycharm支持typing检查错误时会出现黄色警告。 type hints主要是要指示函数的输入和输出的数据类型数据类型在typing 包中基本类型有str list dict等等 Union 是当有多种可能的数据类型时使用比如函数有可能根据不同情况有时返回str或返回list那么就可以写成Union[list, str] Optional 是Union的一个简化 当 数据类型中有可能是None时比如有可能是str也有可能是None则Optional[str], 相当于Union[str, None] 4.3、请求体数据 当你需要将数据从客户端例如浏览器发送给 API 时你将其作为「请求体」发送。请求体是客户端发送给 API 的数据。响应体是 API 发送给客户端的数据。 FastAPI 基于 Pydantic Pydantic 主要用来做类型强制检查校验数据。不符合类型要求就会抛出异常。 对于 API 服务支持类型检查非常有用会让服务更加健壮也会加快开发速度因为开发者再也不用自己写一行一行的做类型检查。 安装上手pip install pydantic 测试 和声明查询参数时一样当一个模型属性具有默认值时它不是必需的。否则它是一个必需属性。将默认值设为 None 可使其成为可选属性。 FastAPI 会自动将定义的模型类转化为JSON SchemaSchema 成为 OpenAPI 生成模式的一部分并显示在 API 交互文档中查看 API 交互文档如下该接口将接收application/json类型的参数。 FastAPI 支持同时定义 Path 参数、Query 参数和请求体参数FastAPI 将会正确识别并获取数据。 参数在 url 中也声明了它将被解释为 path 参数 参数是单一类型例如int、float、str、bool等它将被解释为 query 参数 参数类型为继承 Pydantic 模块的BaseModel类的数据模型类则它将被解释为请求体参数 4.4、form表单数据 在 OAuth2 规范的一种使用方式密码流中需要将用户名、密码作为表单字段发送而不是 JSON。 FastAPI 可以使用Form组件来接收表单数据需要先使用pip install python-multipart命令进行安装。 pip install python-multipart 4.5、文件上传 4.6、Reqeust对象 有些情况下我们希望能直接访问Request对象。例如我们在路径操作函数中想获取客户端的IP地址需要在函数中声明Request类型的参数FastAPI 就会自动传递 Request 对象给这个参数我们就可以获取到 Request 对象及其属性信息例如 header、url、cookie、session 等。 4.7、请求静态文件 在 Web 开发中需要请求很多静态资源文件不是由服务器生成的文件如 css/js 和图片文件等。 4.8、响应模型相关参数 1response_model 前面写的这么多路径函数最终 return 的都是自定义结构的字典FastAPI 提供了 response_model 参数声明 return 响应体的模型 response_model 是路径操作的参数并不是路径函数的参数哦 FastAPI将使用response_model进行以下操作 将输出数据转换为response_model中声明的数据类型。验证数据结构和类型将输出数据限制为该model定义的添加到OpenAPI中在自动文档系统中使用。 你可以在任意的路径操作中使用 response_model 参数来声明用于响应的模型 案例 注册功能输入账号、密码、昵称、邮箱注册成功后返回个人信息 2response_model_exclude_unset 通过上面的例子我们学到了如何用response_model控制响应体结构但是如果它们实际上没有存储则可能要从结果中忽略它们。例如如果model在NoSQL数据库中具有很多可选属性但是不想发送很长的JSON响应其中包含默认值。 案例 请求http://127.0.0.1:8080/items/foo 不设置unset参数 设置unset参数 使用路径操作装饰器的 response_model 参数来定义响应模型特别是确保私有数据被过滤掉。使用 response_model_exclude_unset 来仅返回显式设定的值。 除了response_model_exclude_unset以外还有response_model_exclude_defaults和response_model_exclude_none我们可以很直观的了解到他们的意思不返回是默认值的字段和不返回是None的字段。 3INCLUDE和EXCLUDE 五、jinja2模板 要了解jinja2那么需要先理解模板的概念。模板在Python的web开发中⼴泛使⽤它能够有效的将业务逻辑和页⾯逻辑分开使代码可读性增强、并且更加容易理解和维护。 模板简单来说就是⼀个其中包涵占位变量表⽰动态的部分的⽂件模板⽂件在经过动态赋值后返回给⽤户。 jinja2是Flask作者开发的⼀个模板系统起初是仿django模板的⼀个模板引擎为Flask提供模板⽀持由于其灵活快速和安全等优点被⼴泛使⽤。 在jinja2中存在三种语法 变量取值 { { }}控制结构 {% %} 5.1、jinja2 的变量 Main.py 5.2、jinja2 的过滤器 变量可以通过“过滤器”进⾏修改过滤器可以理解为是jinja2⾥⾯的内置函数和字符串处理函数。常⽤的过滤器有 过滤器名称说明capitialize把值的⾸字母转换成⼤写其他⼦母转换为⼩写lower把值转换成⼩写形式title把值中每个单词的⾸字母都转换成⼤写trim把值的⾸尾空格去掉striptags渲染之前把值中所有的HTML标签都删掉join拼接多个值为字符串round默认对数字进⾏四舍五⼊也可以⽤参数进⾏控制safe渲染时值不转义 那么如何使⽤这些过滤器呢只需要在变量后⾯使⽤管道(|)分割多个过滤器可以链式调⽤前⼀个过滤器的输出会作为后⼀个过滤 器的输⼊。 5.3、jinja2 的控制结构 5.3.1、分支控制 jinja2中的if语句类似与Python的if语句它也具有单分⽀多分⽀等多种结构不同的是条件语句不需要使⽤冒号结尾⽽结束控制语句需要使⽤endif关键字 5.3.2、循环控制 jinja2中的for循环⽤于迭代Python的数据类型包括列表元组和字典。在jinja2中不存在while循环。 六、ORM操作 在大型的web开发中我们肯定会用到数据库操作那么FastAPI也支持数据库的开发你可以用 PostgreSQL、MySQL、 SQLite Oracle 等。本文用SQLite为例。我们看下在fastapi是如何操作设计数据库的。 fastapi是一个很优秀的框架但是缺少一个合适的orm官方代码里面使用的是sqlalchemyTortoise ORM 是受 Django 启发的易于使用的异步 ORM 对象关系映射器。 Tortoise ORM文档 Tortoise ORM 目前支持以下数据库 PostgreSQL 9.4使用asyncpgSQLite使用aiosqliteMySQL/MariaDB使用aiomysql或使用asyncmy 6.1、创建模型 以选课系统为例 models.py 6.2、aerich迁移工具 main.py settings.py aerich是一种ORM迁移工具需要结合tortoise异步orm框架使用。安装aerich 1. 初始化配置只需要使用一次 初始化完会在当前目录生成一个文件pyproject.toml和一个文件夹migrations pyproject.toml保存配置文件路径低版本可能是aerich.inimigrations存放迁移文件 2. 初始化数据库一般情况下只用一次 此时数据库中就有相应的表格如果TORTOISE_ORM配置文件中的models改了名则执行这条命令时需要增加--app参数来指定你修改的名字 3. 更新模型并进行迁移 修改model类重新生成迁移文件,比如添加一个字段 迁移文件名的格式为 {version_num}{datetime}{name|update}.json。 注意此时sql并没有执行数据库中admin表中没有xxx字段 4. 重新执行迁移写入数据库 5. 回到上一个版本 6. 查看历史迁移记录 6.3、api接口与restful规范 api接口 应用程序编程接口Application Programming InterfaceAPI接口就是应用程序对外提供了一个操作数据的入口这个入口可以是一个函数或类方法也可以是一个url地址或者一个网络地址。当客户端调用这个入口应用程序则会执行对应代码操作给客户端完成相对应的功能。 当然api接口在工作中是比较常见的开发内容有时候我们会调用其他人编写的api接口有时候我们也需要提供api接口给其他人操作。由此就会带来一个问题api接口往往都是一个函数、类方法、或者url或其他网络地址不断是哪一种当api接口编写过程中我们都要考虑一个问题就是这个接口应该怎么编写接口怎么写的更加容易维护和清晰这就需要大家在调用或者编写api接口的时候要有一个明确的编写规范 restful规范 为了在团队内部形成共识、防止个人习惯差异引起的混乱我们都需要找到一种大家都觉得很好的接口实现规范而且这种规范能够让后端写的接口用途一目了然减少客户端和服务端双方之间的合作成本。 目前市面上大部分公司开发人员使用的接口实现规范主要有restful、RPC。 REST与技术无关代表的是一种软件架构风格REST是Representational State Transfer的简称中文翻译为“表征状态转移”或“表现层状态转化”。 简单来说REST的含义就是客户端与Web服务器之间进行交互的时候使用HTTP协议中的4个请求方法代表不同的动作。 GET用来获取资源 POST用来新建资源 PUT用来更新资源 DELETE用来删除资源。 只要API程序遵循了REST风格那就可以称其为RESTful API。目前在前后端分离的架构中前后端基本都是通过RESTful API来进行交互。 例如我们现在要编写一个选课系统的接口我们可以查询对一个学生进行查询、创建、更新和删除等操作我们在编写程序的时候就要设计客户端浏览器与我们Web服务端交互的方式和路径。 而对于数据资源分别使用POST、DELETE、GET、UPDATE等请求动作来表达对数据的增删查改。 GET/students获取所有学生请求方法请求地址后端操作GET/students获取所有学生POST/students增加学生GET/students/1获取编号为1的学生PUT/students/1修改编号为1的学生DELETE/students/1删除编号为1的学生 6.4、选课系统接口开发 api/student.py 七、中间件与CORS 7.1、中间件 你可以向 FastAPI 应用添加中间件. 中间件是一个函数,它在每个请求被特定的路径操作处理之前,以及在每个响应之后工作. 如果你使用了 yield 关键字依赖, 依赖中的退出代码将在执行中间件后执行. 如果有任何后台任务(稍后记录), 它们将在执行中间件后运行. 要创建中间件你可以在函数的顶部使用装饰器 app.middleware(http). 中间件参数接收如下参数 request.一个函数call_next它将接收request作为参数. 这个函数将 request 传递给相应的 路径操作.然后它将返回由相应的路径操作生成的 response.然后你可以在返回 response 前进一步修改它. 7.2、CORS 转载https://blog.csdn.net/weixin_53909748/article/details/131747197 https://www.yuque.com/gengdiniu/vt4aq6/gygwu471ql38nzaq?singleDoc#ISclm 学习视频地址https://www.bilibili.com/video/BV1Ya4y1D7et/?p2spm_id_frompageDrivervd_sourcef90f7a1cc1fcfa7341c9b24943640b9d
http://www.w-s-a.com/news/328988/

相关文章:

  • 蘑菇街的网站建设凡科网站建设网页怎么建
  • 中国光大国际建设工程公司网站论坛是做网站还是app好
  • 地产集团网站建设高德是外国公司吗?
  • 天津市网站建站制作网站建设新报价图片欣赏
  • 怎么样在百度搜到自己的网站高端房产网站建设
  • 邯郸做移动网站多少钱ui设计好就业吗
  • 共享虚拟主机普惠版做网站产品推广包括哪些内容
  • 广州市网站建站免费咨询医生有问必答
  • app网站建设制作哪个网站可以做魔方图片
  • 教育培训网站建设方案模板下载网站文风
  • 电龙网站建设wordpress文章两端对齐
  • 做外单网站亚马逊免费的网站加速器
  • 英文网站推广工作一个虚拟主机可以做几个网站吗
  • 微网站 合同重庆电力建设设计公司网站
  • 网站怎么设置支付网站源码下载后怎么布置
  • 广州市公需课在哪个网站可以做手机商城软件下载
  • app网站建设需要什么长治网站建设公司
  • 网站模板平台广告宣传网站
  • cc域名的网站做网站放太多视频
  • 让公司做网站要注意什么建设工程公司企业文化
  • 佛山搭建建网站哪家好微信如何建立自己的公众号
  • 联想公司网站建设现状广州建网站兴田德润团队
  • 网站开发的技术有网页设计实训报告工作内容和步骤
  • 视频做网站长沙网站制作平台
  • js网站建设北京seo公司优化网络可见性
  • 付款网站源码建网站卖东西
  • 用php做的录入成绩的网站wordpress等级插件
  • 网站运营优化方案广西桂林公司
  • 快递网站策划怎么做ppt长春建设信息网站
  • 做服装搭配图的网站有哪些经营一个网站要怎么做