FastAPI学习Day1

目录

安装pyCharm

创建项目

安装FastAPI的工具

使用FastAPI

发送post请求,用postman测试

获取URL参数

请求头传递参数 Header

请求体传递参数

json格式传递数据,Body类

form表单格式传递数据,导入Form类

修改响应状态码

JSONResponse 返回数据的格式是json对象

 HTMLResponse 返回数据的方式是html页面

FileResponse 返回数据的方式是文件

通过模板引擎返回HTML页面


安装pyCharm

下载社区版,参考其他博主就行,注意是file——settings——project——project interpreter包管理

使用技巧

file——Settings——Appearance中设置背景颜色和工具栏的字体和字体大小

 file——Settings——Editor——font 设置编辑页面字体大小和行距

 file——Settings——Editor——File Encodings 设置编码形式

FastAPI是python web框架,重点在异步编程,python3.6版本以上

可以用FastAPI开发网站、开发web API、做一个测试平台、持续集成工具、生成文档

创建项目

选择new environment using会创建一个venv的虚拟环境,这样的好处是每个项目都是独立的空间,不会存在版本依赖冲突的问题,不会对之前的系统环境造成污染

选择previously configured interpreter,之前配置的解释器,然后选择自己电脑上面的python版本,然后还是会创建虚拟环境,在file——settings——project——project interpreter中

show all—— + —— New environment 虚拟环境 venv —— ok 

 两种方法结果是一样的,肯定选择第一种

安装FastAPI的工具

方法一:在pyCharm中可以用包管理工具

在file——settings——project——project interpreter中,点击+,搜索fastapi,点击Install

方法二:通用方法,适用于所有编辑器

打开终端(pyCharm: Terminal)

 进入venv虚拟环境——venv\Scripts\activate.bat,然后安装fastapi

pip install fastapi[all]

为了节省内存空间,可以用到什么库在安装什么,不安装全部

pip install fastapi——pip install uvicorn,uvicorn是服务器,最基本是需要这两个

pip list 查看安装的库

使用FastAPI

1.导入   from fastapi import FastAPI

2.初始化对象    app=FastAPI()

3.main  运行

方法一:
if __name__ == '__main__':
    uvicorn.run(app)

方法二:在终端  uvicorn main:app --reload  (main是文件名)

1. fastapi文档路径

http://127.0.0.1:8000/docs

2.   """注释信息会同步到文档里面"""

发送post请求,用postman测试

@app.post("/login")
def login():
    return {"msg":"login success"}
# 支持多种请求
@app.api_route("/login",methods=("GET","POST"))
def login():
    return {"msg":"login success"}

获取URL参数

# /city/{city}?q=xx  city为路径参数,?q=xx为查询参数,其中运行后为必填,不然就会报错,加上option之后 查询参数变成选填
#http://127.0.0.1:8000/city/Beijing?query_string=xx
@app.get('/city/{city}')
def city(city:str, query_string: Optional[str]=None):
    return {'city':city, 'query_string': query_string}
# 测试http://127.0.0.1:8000/user/2 , 2为传递的参数
@app.get("/user/{id}")      / 加变量
def user(id):
    return {"id":id}
# http://127.0.0.1:8000/stu?id=8   查询字符串
@app.get("/stu")           ? 加变量
def stu(id):
    return {"id":id}

不同的方法路径可以一样

@app.post('/stu')
def stu():
    return {"hello":"world"}

请求头传递参数 Header

获取用户名和密码的token,是存放在请求头中,就需要导入Header,用token值访问其他接口,也就是用请求头去传递参数

@app.get("/pra")
def pra(id,token=Header(None)):   #默认参数,名字必须保持一致,token——postman里面也是token
    return {"id":id,"token":token}

请求体传递参数

# 请求体Body,默认参数,名字随意
@app.post("/login")
def login(a=Body(None)):
    return {"a":a}

json格式传递数据,Body类

form表单格式传递数据,导入Form类

保证接受的字段名称和传递的字段名称一致,Form表单类是需要下载python-multipart

@app.post("/login")
def login(name=Form(None),age=Form(None)):
    return {"data":{"name":name,"age":age}}

修改响应状态码

JSONResponse 返回数据的格式是json对象

需要导入from fastapi.responses import JSONResponse
# content返回的数据  status_code状态码  headers可以添加请求头里面的参数
@app.get("/user")
def user():
    return JSONResponse(content={"msg":"get user"},
                        status_code=202,
                        headers={"a":"b"})

 HTMLResponse 返回数据的方式是html页面

@app.get("/")
def user():
    html_content = """"
    <html>
    <body><p style="color:red">Hello World</p></body>
    </html>
    """
    return HTMLResponse(content=html_content)

FileResponse 返回数据的方式是文件

@app.get("/avatar")
def user():
    avatar = 'static/mage.jpg'
    return FileResponse(avatar,filename="mage.jpg")

没有filename="mage.jpg"参数,浏览器直接显示图片,有这个参数,浏览器会提示下载图片

 需要下载一个包:aiofiles—— pip install aiofiles

通过模板引擎返回HTML页面

from fastapi.templating import Jinja2Templates  常用的模板引擎

安装 pip install jinja2

网络上的页面的数据是会改变的,所有就需要Request获取

from fastapi import FastAPI,Request
from fastapi.templating import Jinja2Templates
app = FastAPI()
template = Jinja2Templates("pages")
# 通过模板引擎返回HTML页面, context参数不能不写,且里面必须是request
@app.get("/")
def user(username,req: Request):
    return template.TemplateResponse("index.html",context={"request":req,"name":username})

username将获取到的数据放到模板引擎中

"name":username—— username是后台获取到的,name是前端的,后台渲染到前台

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值