(fastapi二)参数校验
现在有一个实际的问题,我们在完成某一个项目的时候,如果说用户非要从接口传递一些非法参数或者某些人想要搞破坏,传递恶意的参数。如果参数直接与数据库相关,恶意传入一些参数会直接影响到数据库的正常运行,所以我们该怎么处理这些非法参数呢?写个函数验证?但是接口那么多,无穷尽也。但是fastapi提供了一些优雅的解决方式! 额外的校验下面是一段代码: 12345678910from typing import Optionalfrom fastapi import FastAPI, Queryapp = FastAPI()@app.get("/router/")async def read_items(q: Optional[str] = None): pass 需求是限制参数q的长度 Query官方提供了一个库叫做Query,这个库可以非常简单的做校验,如下: 12345678910from typing import Optionalfrom fastapi import FastAPI, Queryapp =...
python类型注释
我找到一些来自于官方的关于python类型注释的资源,我将其复制下来,用于个人收藏。良好的类型注释习惯能让代码的可读性大大增强,同时也能够保证后续加入的人员能够快速理解与使用。 变量Python 3.6 在 PEP 526 中引入了用于注释变量的语法,我们在大多数示例中都使用它。 123456789101112# This is how you declare the type of a variable type in Python 3.6age: int = 1# You don't need to initialize a variable to annotate ita: int # Ok (no value at runtime until assigned)# The latter is useful in conditional brancheschild: boolif age < 18: child = Trueelse: child =...
mysql的四大特性
四大特性MySQL有四大特性,分别是:原子性、隔离性、永久性、一致性。 原子性原子性这个词是从字面意义上最不好理解的一个词。原子性的含义是:一个事务包含多个操作,这些操作要么全部执行,要么全都不执行。实现事务的原子性,要支持回滚操作,在某个操作失败后,回滚到事务执行之前的状态。 举个例子,在你使用移动支付的时候,你付钱出去的一瞬间,别人也需要收款到账,付钱与收钱必须是一致的,如果不一致那就说明有问题,某个操作在过程当中遗失了,而这一进一出的过程被视为一个单元操作,不可被分割。出错之后原子性必须具有回滚功能,即返回到操作之前的情况,如果不能做到就有可能引起重大事故。 一致性一致性分为五种一致性,分别用于解决不同的问题: 强一致性:读操作可以立即读到提交的更新操作。 弱一致性:提交的更新操作,不一定立即会被读操作读到,此种情况会存在一个不一致窗口,指的是读操作可以读到最新值的一段时间。 ...
git基础使用
什么是gitgit是一个分布式的版本控制软件。 ...
(fastapi一)安装与简单使用
由于自己已经使用过很久的fastapi了,但是到现在为止依然不能够非常熟练,多数时候依然会自己造轮子,走不少弯路,因此打算开始对fastapi进行系列总结。 安装由于fastapi的启动需要uvicorn的配合,因此官方提供两种安装方式,第一种是全部安装,即: 1pip install fastapi[all] 第二种是分开安装即: 12pip install fastapipip install uvicorn[standard] 如果安装太慢的话,添加一个临时源吧,如下: 1pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyspide 使用fastapi服务创建有两种方式,第一种是通过代码启动,第二种是在命令行启动,如果你需要调试代码,建议你使用第一种,当然,某些编辑器提供直接的调试启动方法,但是需要注意配置启动函数与启动对象。这里给出两种启动方式: 12345678910111213from fastapi import FastAPIimport uvicorn # 必须添加这个库app =...
python之类型提示
Python 3.6+ 版本加入了对”类型提示”的支持。通过声明变量的类型,编辑器和一些工具能给你提供更好的支持。 示例当我们在使用python写一段代码的时候,如果遇到下面这种情况: 12def funcname(param1,param2): ...
装饰器
12from IPython.core.interactiveshell import InteractiveShellInteractiveShell.ast_node_interactivity = 'all' 装饰器(Decorators)装饰器(Decorators)是 Python 的一个重要部分。简单地说:他们是修改其他函数的功能的函数。他们有助于让我们的代码更简短,也更Pythonic(Python范儿)。 1234567891011121314def hi(name=" world"): return "hello" + namehi() # 我们甚至可以将一个函数赋值给一个变量,比如greet = hi# 我们这里没有在使用小括号,因为并不是在调用hi函数# 而是在将它放在greet变量里头。尝试运行下这个greet()# 如果删掉旧的hi函数del hi# hi() # 报错 greet() 12345'hello world''hello...
python之__init__.py
神奇的__init____init__一般在两种情况下会出现,第一种是以在class(类)当中以函数形式出现,如下: 1234class test(object): def __init__(self,name,age): self.name = name self.age = age 第二种情况则是以__init__.py文件的形式出现在文件夹下。两种不同的情况虽然使用了相同名字的定义,但是其作用可以说类似又可以说不同。 def __init__(self)__init__属于魔法函数的一种,之所以说是一种其原因是因为魔法函数是一个大家族,常见的:__ str__()、__ new__()、__ unicode__()、__ call__()、__...
vscode离线远程开发配置
起因由于各种原因,在开发过程当中需要做到网络的物理隔绝,因此离线部署环境或者部署开发工具就成为了面临的重大难题,尤其是当需要配置vscode离线远程开发的时候。当然使用pycharm可能不需要这么麻烦,但是个人习惯导致自己觉得vscode更加顺手,同时也更加美观,在后续的vscode更新当中丰富的插件也让我难以割舍,因此配置离线环境下vscode的远程安装就成了一大难题。 操作下载VScode首先在Vscode官网:https://code.visualstudio.com/...
python数据校验
什么是数据校验?在实际的开发过程当中,我们往往会面临很多需要数据对接的情况,这时候一个函数可能需要处理一个或者多个数据参数,也就是说函数的参数面临着多且不确定性,参数本身不确定性还伴随着在传递过程当中是否符合规范的问题。以python函数为例,以下是随意写法和标准写法: 1234567891011121314151617181920212223# 随意def max(a,b): if a>b: return a elif a<b: return b return 0# 建议的标准写法def max(a:int=0, b:int=0)->int: """ 这里描述函数的功能 :param a: 参数描述 :param b: 参数描述 :returns: 返回描述 :raises keyError: 可能的错误捕获描述 """ if a>b: return a elif...
参数校验/封面.jpeg)



安装与简单使用/封面.jpg)









