FastAPI框架文件上传的处理-client使用postman
使用FastAPI处理文件上传,文件上传Content-Type必须使用multipart/form-data,因为python服务端必须要安装python-multipart模块。另外在postman客户端,需要在body中选择form-data,在下面的key输入框右边鼠标停留(会出现一个下拉选择file/text),选择file表示这是个文件域,从而右边可以上传文件。此时header中会自动生成Content-Type:multipart/form-data;boundary=<calculatedwhenrequestissent>项,不需要我们手动配置。 #python安装python-multipart模块 $pipinstallpython-mult...[>>…]
Python字符串string方法大全及使用方法[2]
#返回一个原字符串右对齐,并使用fillchar(默认空格)填充至长度width的新字符串 rjust(width,[,fillchar])#返回一个原字符串左对齐,并使用fillchar填充至长度width的新字符串,fillchar默认为空格。 ljust(width[,fillchar])#返回长度为width的字符串,原字符串右对齐,前面填充0zfill(width) #以指定字符串作为分隔符,将seq中所有的元素(的字符串表示)合并为一个新的字符串join(seq)#根据str给出的表(包含256个字符)转换string的字符,要过滤掉的字符放到deletechars参数中translate(table,deletecha...[>>…]
Python字符串string方法大全及使用方法[1]
#将字符串的第一个字符转换为大写capitalize()#返回一个指定的宽度width居中的字符串,fillchar为填充的字符,默认为空格。center(width,fillchar) #返回str在string里面出现的次数,如果beg或者end指定则返回指定范围内str出现的次数count(str,beg=0,end=len(string)) #以encoding指定的编码格式编码字符串,如果出错默认报一个ValueError的异常,除非errors指定的是'ignore'或者'replace'encode(encoding='UTF-8',errors='strict')#检查字符串是否以obj结束,如果beg或者end指定则检查指定的范围内是否以...[>>…]
使用Anaconda3安装的spyder双击不启动无反应及docker logs查看实时日志
因为spyder报错,于是就把它关了,但发现之后双击spyder就没有反应了,在进程中也找不到这个进程在跑,在cmd命令行中执行spyder发现有提示Spyderisalreadyrunning,这真是一个BUG。如果也有提示如果要新开一个实例可以使用--new-instance选项,再打开一个spyder。网上有说需要安装pyqt5,我这里并没有安装就可以使用--new-instance,应该不需要安装。不过使用发现用--new-instance来启动spyder,那么这个cmd窗口就不能关闭,一关spyder就停了。 $spyder Spyderisalreadyrunning.Ifyouwanttoop...[>>…]
fastapi框架python的WEB环境常需要安装的模块及requirements.txt
运行pythonWEB环境,搭建fastapi需要安装很多的模板,比如uvicorn,pymysql等等,都需要进行安装。在安装模块的时候很容易因为模块名和要安装的关键词不一致而报错无法进行,安装dotenv的时候还会碰到。ERROR:Commanderroredoutwithexitstatus1:pythonsetup.pyegg_infoCheckthe...,这时还不能直接使用pipinstalldoten。建议这时检查是否同时安装了Python-dotenv和dotenv这两个,它们会引起冲突。试着先卸载dotenv,再卸载python-dotenv,然后再安装 $pipinstalluvicorn Successfullyinstalledh...[>>…]
FastAPI框架对请求参数的接收验证Path, Query, Body
FastAPI框架自带了对请求参数的验证,包括在路径中的参数、?请求的参数以及Body中的参数,使用Path提取和验证路径参数;使用Query提取和验证?请求中的参数,使用Body将参数让客户端由body(默认application/json方式)传入。示例如下: #示例python代码 fromfastapiimportFastAPI,Path,Query,Body app=FastAPI() #通过get方式在URL路径中接收请求参数 @app.get("/items/{item_id}") asyncdefread_root1(item_id:int=Path(...,gt=0)): return{"item_id":item_id} #虽然是通过post方式提交请求...[>>…]
FastAPI框架中如何提取request请求的内容信息以及request内容大全
FastAPI中做了大量包装,因此我们可以直接写一个方法拿到get,post数据处理后返回给调用方,但有时我们仍然需要直接使用request来处理,FastAPI也提供了方法直接拿到request来处理。示例如下: #需要先引入Request模块 fromfastapiimportFastAPI,Request app=FastAPI() #定义路由,并且在方法中带上request:Request @app.get("/items/{item_id}") defread_root(item_id:str,request:Request): client_host=request.client.host return{"client_host":client_host,"item_id":item_id} &...[>>…]
FastApi框架替换请求参数验证失败抛出的422错误
FastAPI框架中自带了Query参数验证,可以使用长度、正则来要求用户输入的内容规则,但是默认情况下,如果用户输入的内容不符的话,会直接抛出422http状态码,再带一个detail描述信息,这样很不好。因为这不是业务全局给调用方响应的返回标准(一般会返回一个code码、message提示信息以及业务数据),此时我们就需要使用自定义请求验证异常来接触框架自身的RequestValidationError。官网也有示例:https://fastapi.tiangolo.com/tutorial/handling-errors/?h=+exception我这里在其基础上进行了...[>>…]
FastApi使用自定义异常抛出
在使用FastApi进行web开发的时候,在控制器方法中可以使用return向http请求返回数据,但如果在控制方法中添加一些统一的Depends判断,比如判断用户的token是否过期,而要在这个过期的模块中直接返回http结果的话,使用return没有处理,只能使用raiseHttpException,但使用raiseHttpException有两个问题,一是raiseHttpException抛出的状态码基本不是200状态码。不过可以使用raiseHTTPException(status_code=200)来指定状态码为200,但还有一个问题就是使用raiseHTTPException抛出的异常会使...[>>…]
FastApi输出mysql结果TypeError: Object of type datetime is not JSON serializable
使用Fastapi框架读取mysql数据库,将查询结果直接输出json的时候报错: File"c:anaconda3libjsonencoder.py",line179,indefault raiseTypeError(f'Objectoftype{o.__class__.__name__}' TypeError:ObjectoftypedatetimeisnotJSONserializable 排查发现mysql中的datetime类型字段,通过pymysql.cursors查询得到的结果集dict中此字段并不是一个字符串,而是一个 <classdatetime.datetime>对象,格式如下:datetime.datetime(2020,11,15,12,11,21)此此对其进行json处理就会报错Type...[>>…]