2020年7月14日
摘要: 作者:麦克煎蛋 出处:https://www.cnblogs.com/mazhiyong/ 转载请保留这段声明,谢谢! 我们可以更灵活的定制返回结果。(这部分是相对高级的内容,如果你是初次接触FastAPI那么可以忽略) 参数responses 我们可以传递给路径操作装饰器一个参数responses 阅读全文
posted @ 2020-07-14 14:57 麦克煎蛋 阅读(2516) 评论(0) 推荐(0) 编辑
  2020年7月13日
摘要: 作者:麦克煎蛋 出处:https://www.cnblogs.com/mazhiyong/ 转载请保留这段声明,谢谢! 默认情况下,FastAPI会基于JSONResponse来返回Response。 如果我们直接返回Response,数据格式不会被自动转换,并且交互式文档也不会自动生成。 下面是一 阅读全文
posted @ 2020-07-13 15:49 麦克煎蛋 阅读(6678) 评论(0) 推荐(0) 编辑
  2020年7月10日
摘要: 作者:麦克煎蛋 出处:https://www.cnblogs.com/mazhiyong/ 转载请保留这段声明,谢谢! 在FastAPI路径操作中,我们通常直接返回以下数据类型:dict,list,Pydantic模型,数据库模型以及其他数据类型。 FastAPI通过jsonable_encoder 阅读全文
posted @ 2020-07-10 15:40 麦克煎蛋 阅读(5620) 评论(0) 推荐(1) 编辑
  2020年7月9日
摘要: 作者:麦克煎蛋 出处:https://www.cnblogs.com/mazhiyong/ 转载请保留这段声明,谢谢! 有时候我们需要在request执行之后继续一些操作,但终端并不需要等待这些操作完成才能收到response。 其中一些场景举例如下: 1、在执行完request之后发送邮件通知。 阅读全文
posted @ 2020-07-09 14:17 麦克煎蛋 阅读(2746) 评论(0) 推荐(0) 编辑
  2020年7月8日
摘要: 我们可以利用 encode/databases 来在FastAPI中支持数据库的异步访问。 兼容以下数据库: PostgreSQL MySQL SQLite 实际中暂未用到,这部分待完善。 参考文档: https://github.com/encode/databases https://fasta 阅读全文
posted @ 2020-07-08 15:22 麦克煎蛋 阅读(4270) 评论(0) 推荐(0) 编辑
摘要: 作者:麦克煎蛋 出处:https://www.cnblogs.com/mazhiyong/ 转载请保留这段声明,谢谢! SQLAlchemy是一个基于Python实现的ORM框架。它提供了一种方法,用于将用户定义的Python类与数据库表相关联,并将这些类(对象)的实例与其对应表中的行相关联。它包括 阅读全文
posted @ 2020-07-08 15:15 麦克煎蛋 阅读(13075) 评论(5) 推荐(2) 编辑
  2020年7月2日
摘要: 作者:麦克煎蛋 出处:https://www.cnblogs.com/mazhiyong/ 转载请保留这段声明,谢谢! 下面我们模拟用户登陆的过程,具体讲解下登陆验证的流程,并完善代码逻辑。 密码哈希 为了数据安全,我们利用PassLib对入库的用户密码进行加密处理,推荐的加密算法是"Bcrypt" 阅读全文
posted @ 2020-07-02 11:05 麦克煎蛋 阅读(5978) 评论(6) 推荐(0) 编辑
  2020年7月1日
摘要: 作者:麦克煎蛋 出处:https://www.cnblogs.com/mazhiyong/ 转载请保留这段声明,谢谢! JWT简介 基于JWT的Token认证机制实现(一)概念 基于JWT的Token认证机制实现(二)认证过程 OAuth2PasswordBearer OAuth2PasswordB 阅读全文
posted @ 2020-07-01 14:28 麦克煎蛋 阅读(6894) 评论(0) 推荐(0) 编辑
  2020年6月30日
摘要: 登录 第一次认证:第一次登录,用户从浏览器输入用户名/密码,提交后到服务器的登录处理的Action层(Login Action); Login Action调用认证服务进行用户名密码认证,如果认证通过,Login Action层调用用户信息服务获取用户信息(包括完整的用户信息及对应权限信息); 返回 阅读全文
posted @ 2020-06-30 16:46 麦克煎蛋 阅读(1344) 评论(0) 推荐(1) 编辑
摘要: JSON Web Token(JWT)是一个非常轻巧的规范。这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息。 JWT的组成 一个JWT实际上就是一个字符串,它由三部分组成:头部、载荷与签名。将这三段信息文本用.链接一起就构成了Jwt字符串。就像这样: eyJhbGciOiJIUzI1 阅读全文
posted @ 2020-06-30 16:27 麦克煎蛋 阅读(1871) 评论(0) 推荐(0) 编辑
  2020年6月29日
摘要: 作者:麦克煎蛋 出处:https://www.cnblogs.com/mazhiyong/ 转载请保留这段声明,谢谢! 在系统安全、身份验证以及权限授权方面通常来说有各种各样的处理方式,但大多都比较复杂。 在很多框架和系统里,涉及安全和身份验证的工作往往都比较繁琐,并且代码量也巨大。 我们先简单了解 阅读全文
posted @ 2020-06-29 11:03 麦克煎蛋 阅读(3631) 评论(0) 推荐(0) 编辑
  2020年6月10日
摘要: 作者:麦克煎蛋 出处:https://www.cnblogs.com/mazhiyong/ 转载请保留这段声明,谢谢! FastAPI支持依赖项在请求结束后做一些额外的工作。 要实现这个功能,我们需要用yield代替return,然后其后添加一些额外的工作。 工程示例 这是一个依赖项函数的例子,我们 阅读全文
posted @ 2020-06-10 14:38 麦克煎蛋 阅读(1381) 评论(0) 推荐(0) 编辑
  2020年6月9日
摘要: 作者:麦克煎蛋 出处:https://www.cnblogs.com/mazhiyong/ 转载请保留这段声明,谢谢! 在有些情况下,我们并不需要依赖项的返回值,但仍然需要依赖项被执行。 在这种情况下,我们可以通过路径操作装饰器来操作依赖项的一个列表。 通过路径操作装饰器添加依赖项 路径操作装饰器接 阅读全文
posted @ 2020-06-09 15:09 麦克煎蛋 阅读(1448) 评论(0) 推荐(0) 编辑
  2020年6月8日
摘要: 作者:麦克煎蛋 出处:https://www.cnblogs.com/mazhiyong/ 转载请保留这段声明,谢谢! 我们可以创建有子依赖项的依赖项,具体依赖深度不受限制。 FastAPI会处理好依赖项之间的关系。 我们先声明第一个依赖项函数: def query_extractor(q11: s 阅读全文
posted @ 2020-06-08 16:49 麦克煎蛋 阅读(1013) 评论(0) 推荐(0) 编辑
摘要: 作者:麦克煎蛋 出处:https://www.cnblogs.com/mazhiyong/ 转载请保留这段声明,谢谢! 2020.08.06 完成工程示例,已上传至GitHub: https://github.com/zhiyongma/fastproject 2020.07.30 第一遍基本翻译完 阅读全文
posted @ 2020-06-08 16:21 麦克煎蛋 阅读(9723) 评论(7) 推荐(7) 编辑
摘要: 作者:麦克煎蛋 出处:https://www.cnblogs.com/mazhiyong/ 转载请保留这段声明,谢谢! 目前为止,我们看到的依赖项的声明都是函数。实际上这只是声明依赖项的方式之一。 依赖项只要是可调用的即可。Python类也是可调用的。因此在FastAPI中,我们可以用Python类 阅读全文
posted @ 2020-06-08 15:40 麦克煎蛋 阅读(1254) 评论(0) 推荐(0) 编辑
摘要: 作者:麦克煎蛋 出处:https://www.cnblogs.com/mazhiyong/ 转载请保留这段声明,谢谢! FastAPI有一个强大并且简单易懂的系统:依赖注入系统。 什么是"依赖注入" "依赖注入"首先意味着在程序中我们的代码可以声明一些它必须依赖的项:我们称之为dependencie 阅读全文
posted @ 2020-06-08 15:34 麦克煎蛋 阅读(2784) 评论(0) 推荐(0) 编辑
  2020年6月4日
摘要: 作者:麦克煎蛋 出处:https://www.cnblogs.com/mazhiyong/ 转载请保留这段声明,谢谢! 跨域资源共享(CORS) 是一种机制,它使用额外的 HTTP 头来告诉浏览器 让运行在一个 origin (domain) 上的Web应用被准许访问来自不同源服务器上的指定的资源。 阅读全文
posted @ 2020-06-04 18:22 麦克煎蛋 阅读(3143) 评论(1) 推荐(0) 编辑
摘要: 作者:麦克煎蛋 出处:https://www.cnblogs.com/mazhiyong/ 转载请保留这段声明,谢谢! 除了自定义中间件,我们也可以直接使用其他的中间件。 FastAPI通过 app.add_middleware() 操作来引入已定义的中间件。 from fastapi import 阅读全文
posted @ 2020-06-04 18:20 麦克煎蛋 阅读(6025) 评论(0) 推荐(0) 编辑
摘要: 作者:麦克煎蛋 出处:https://www.cnblogs.com/mazhiyong/ 转载请保留这段声明,谢谢! 我们可以在FastAPI应用中使用中间件。 中间件实际上是一个函数,在每个request处理之前被调用,同时又在每个response返回之前被调用。 1、首先接收访问过来的requ 阅读全文
posted @ 2020-06-04 18:17 麦克煎蛋 阅读(4852) 评论(0) 推荐(0) 编辑
  2020年5月28日
摘要: 作者:麦克煎蛋 出处:https://www.cnblogs.com/mazhiyong/ 转载请保留这段声明,谢谢! 如果使用API时有错误发生,你需要通知给客户端(Web端或者API使用者)这个错误信息。 常见的错误信息为: 客户端没有权限进行相关的操作。 客户端找不到对应的路径操作。 客户端找 阅读全文
posted @ 2020-05-28 16:53 麦克煎蛋 阅读(4872) 评论(0) 推荐(0) 编辑
  2020年5月26日
摘要: 作者:麦克煎蛋 出处:https://www.cnblogs.com/mazhiyong/ 转载请保留这段声明,谢谢! 在进行数据存储或者传输的时候,有时候我们需要把数据(比如Pydantic模型)转换成JSON兼容的格式(如dict、list等)。 FastAPI提供了 jsonable_enco 阅读全文
posted @ 2020-05-26 14:46 麦克煎蛋 阅读(2191) 评论(0) 推荐(0) 编辑
  2020年5月25日
摘要: 作者:麦克煎蛋 出处:https://www.cnblogs.com/mazhiyong/ 转载请保留这段声明,谢谢! 我们可以用Form组件来接收表单数据。 1、安装组件 pip install python-multipart 2、导入组件 from fastapi import Form 3、 阅读全文
posted @ 2020-05-25 16:47 麦克煎蛋 阅读(2653) 评论(0) 推荐(0) 编辑
摘要: 作者:麦克煎蛋 出处:https://www.cnblogs.com/mazhiyong/ 转载请保留这段声明,谢谢! 一、通过参数status_code自定义状态码 我们可以用参数status_code来声明Response状态码。 支持任意路径操作: @app.get() @app.post() 阅读全文
posted @ 2020-05-25 16:25 麦克煎蛋 阅读(3668) 评论(0) 推荐(2) 编辑
摘要: 作者:麦克煎蛋 出处:https://www.cnblogs.com/mazhiyong/ 转载请保留这段声明,谢谢! 一、Response模型 在路径操作中,我们可以用参数response_model来声明Response模型。 from typing import List from fasta 阅读全文
posted @ 2020-05-25 14:28 麦克煎蛋 阅读(4137) 评论(0) 推荐(0) 编辑
  2020年5月21日
摘要: 作者:麦克煎蛋 出处:https://www.cnblogs.com/mazhiyong/ 转载请保留这段声明,谢谢! 读取Header信息 基于Query、Path、Cookie等模块同样的模式,我们可以利用Header模块来声明headers。 我们可以用定义其他模块参数同样的方式,便捷的定义H 阅读全文
posted @ 2020-05-21 16:48 麦克煎蛋 阅读(4978) 评论(0) 推荐(0) 编辑
摘要: 作者:麦克煎蛋 出处:https://www.cnblogs.com/mazhiyong/ 转载请保留这段声明,谢谢! 读取Cookie信息 基于Query、Path等模块同样的模式,我们可以利用Cookie模块来声明cookies。Cookie是Query、Path的姐妹类,它们都继承自Param 阅读全文
posted @ 2020-05-21 16:44 麦克煎蛋 阅读(3756) 评论(0) 推荐(0) 编辑
摘要: 作者:麦克煎蛋 出处:https://www.cnblogs.com/mazhiyong/ 转载请保留这段声明,谢谢! 目前为止,我们主要用到了一些通用的数据类型,比如int、float、str、bool等。 但我们也可以用一些相对复杂的数据类型,并且仍然可以得到以下的功能支持: 编辑器支持 数据格 阅读全文
posted @ 2020-05-21 10:45 麦克煎蛋 阅读(1880) 评论(0) 推荐(0) 编辑
  2020年5月20日
摘要: 作者:麦克煎蛋 出处:https://www.cnblogs.com/mazhiyong/ 转载请保留这段声明,谢谢! 一、Pydantic模型的附加信息 与前面讲过的Query、Path、Body类似,我们也可以为Pydantic模型添加附加信息,基于模块Field。 1、导入Field模块 fr 阅读全文
posted @ 2020-05-20 21:07 麦克煎蛋 阅读(8428) 评论(2) 推荐(1) 编辑
  2020年5月18日
摘要: 作者:麦克煎蛋 出处:https://www.cnblogs.com/mazhiyong/ 转载请保留这段声明,谢谢! 三、路径参数附加信息 对路径参数附加信息的支持,FastAPI通过Path模块来实现。 1、导入Path模块 from fastapi import Path 2、添加附加信息 所 阅读全文
posted @ 2020-05-18 21:20 麦克煎蛋 阅读(1260) 评论(0) 推荐(0) 编辑