当前位置:首页 > 实用技巧 >

192.168.2.124在哪里(192.168.2.53为什么打不开)

来源:原点资讯(m.360kss.com)时间:2023-12-20 03:15:06作者:YD166手机阅读>>

前言

在上一篇文章中,我们使用FastAPI编写了一个Flask风格的demo。在这篇文章里我们继续接着上篇的内容对FastAPI进行探究,这里面就包括了请求参数的处理,数据库的连接等。好了闲话少说,现在就开始这篇的内容。

获取路径参数
  1. 跟flask框架一样,fastapi也提供从url中获取参数的能力,具体怎么获取的我们用例子说明一些,代码如下所示:

├── app │ ├── api │ │ ├── __init__.py │ │ └── users.py │ ├── __init__.py ├── manage.py

2. 打开app/api/users.py文件,键入如下代码:

# app/api/users.py @users.get("/get_user/{id}") async def get_user_by_id(id: int): if id > 0: return {"username": "admin", "msg": "success", "code": 200} return {"msg": "failed", "code": 401}

3. 启动服务,并测试

分别打开两个bash,输入以下命令

curl -X GET "http://192.168.2.124:9000/api/get_user/0" {"msg":"failed","code":401}% curl -X GET "http://192.168.2.124:9000/api/get_user/10" {"username":"admin","msg":"success","code":200}%

服务日志信息如下

python manage.py INFO: Started server process [65515] INFO: Waiting for application startup. INFO: Application startup complete. INFO: Uvicorn running on http://0.0.0.0:9000 (Press CTRL C to quit) INFO: 192.168.2.207:54530 - "GET /api/get_user/0 HTTP/1.1" 200 OK INFO: 192.168.2.207:54532 - "GET /api/get_user/10 HTTP/1.1" 200 OK获取表单数据

当我们需要从表单中获取用户输入的数据使这个使用就需要使用到Form了

  1. 想要使用Form就需要提前安装python-multipart这个库

pip install python-multipart -i https://pypi.tuna.tsinghua.edu.cn/simple

2. 在视图函数中使用Form对象,具体代码如下所示:

# app/api/users.py from fastapi import APIRouter, Form users = APIRouter() @users.post("/login") async def login(username: str = Form(), password: str = Form()): if username and password: return {"msg": "success", "code": 200} return {"msg": "failed", "code": 401}

运行测试结果如下所示

curl -X POST -F "username=admin" -F "password=admin" "http://192.168.2.124:9000/api/login" {"msg":"success","code":200}% # 服务器运行日志输出如下 python manage.py INFO: Started server process [65590] INFO: Waiting for application startup. INFO: Application startup complete. INFO: Uvicorn running on http://0.0.0.0:9000 (Press CTRL C to quit) INFO: 192.168.2.207:54534 - "POST /api/login HTTP/1.1" 200 OK 配置数据库和创建数据模型

很多web大都会提供一些orm的插件或者功能,例如Django就内置了orm,但是与之不一样的地方是像flask和fastapi这些小型框架却没有内置相对应的orm框架,而另辟蹊径采用插件集成的方式来支持数据的操作,这样做的好处是灵活,选择多。

  1. 安装tortoise-orm和aiomysql驱动

我们选择tortoise-orm这个第三方的orm框架,这个框架是参考django内置orm开发的

pip install tortoise-orm -i https://pypi.tuna.tsinghua.edu.cn/simple pip install aiomysql -i https://pypi.tuna.tsinghua.edu.cn/simple

2. 定义数据模型

# touch app/models/models.py创建模型文件 from tortoise import fields from tortoise.models import Model class User(Model): id = fields.IntField(pk=True) username = fields.CharField(max_length=30, unique=True, description="用户名") password = fields.CharField(max_length=128, description="密码")

3. 配置数据连接信息和初始化数据库

from fastapi import FastAPI from tortoise.contrib.fastapi import register_tortoise def create_app() -> FastAPI: app = FastAPI() register_rotuer(app) register_db(app) return app def register_rotuer(app: FastAPI) -> None: """注册路由""" from app.api import routers app.include_router(routers) def register_db(app: FastAPI) -> None: """"初始化数据库并根据数据模型生成对应的表""" register_tortoise( app, db_url="mysql://root:root12345678@192.168.2.124:3306/item_name", modules={"models": ["app.models.models"]},# 这是一个列表用来指明我们的模型文件的路径 generate_schemas=True, add_exception_handlers=True)

测试运行,登录mysql查看是否生成了数据表

python manage.py INFO: Started server process [66742] INFO: Waiting for application startup. /home/test/env/lib/python3.10/site-packages/aiomysql/cursors.py:239: Warning: Table 'user' already exists await self._query(query) INFO: Application startup complete. INFO: Uvicorn running on http://0.0.0.0:9000 (Press CTRL C to quit)

查看是否创建了数据表

mysql> desc user; ---------- -------------- ------ ----- --------- ---------------- | Field | Type | Null | Key | Default | Extra | ---------- -------------- ------ ----- --------- ---------------- | id | int | NO | PRI | NULL | auto_increment | | username | varchar(30) | NO | UNI | NULL | | | password | varchar(128) | NO | | NULL | | ---------- -------------- ------ ----- --------- ---------------- 3 rows in set (0.00 sec) 在视图函数中操作模型数据

fastapi在视图函数中操作模型数据跟在flask中操作是类似的,具体如下所示

# app/api/users.py from fastapi import APIRouter, Form from app.models.models import User users = APIRouter() @users.post("/login") async def login(username: str = Form(), password: str = Form()): if username and password: return {"msg": "success", "code": 200} return {"msg": "failed", "code": 401} @users.get("/get_users") async def get_users(): return {"msg": "success", "code": 200} @users.get("/get_user/{id}") async def get_user_by_id(id: int): if id > 0: return {"username": "admin", "msg": "success", "code": 200} return {"msg": "failed", "code": 401} @users.post("/add") async def add(username: str = Form(), password: str = Form()): if username and password: u = await User.create(username=username, password=password) if u: return {"msg": "create user success", "code": 200} return {"msg": "create user failed", "code": 403} @users.get("/get_user/{id}") async def get_user(id: int): if id: data = await User.filter(id=id).first() return {"data": data, "msg": "success", "code": 200} return {"data": "", "msg": "success", "code": 200} @users.post("/update_user") async def update_user(id: str = Form(), name: str = Form()): if name and id: id = int(id) await User.filter(id=id).update(username=name) return {"msg": "success", "code": 200} return {"msg": "failed", "code": 400} @users.get("/delete_user/{id}") async def delete(id: int): if id: await User.filter(id=id).delete() return {"msg": "success", "code": 200} return {"msg": "failed", "code": 400}

运行测试结果如下所示:

curl -X POST -F "username=admin3" -F "password=admin3" "http://192.168.2.124:9000/api/add" {"msg":"create user success","code":200}% curl -X GET "http://192.168.2.124:9000/api/get_user/1" {"username":"admin","msg":"success","code":200}% curl -X POST -F "id=2" -F "name=admin2" "http://192.168.2.124:9000/api/update_user" {"msg":"success","code":200}% curl -X GET "http://192.168.2.124:9000/api/delete_user/2" {"msg":"success","code":200}% # 服务器运行输出日志如下 python manage.py INFO: Started server process [67038] INFO: Waiting for application startup. /home/test/env/lib/python3.10/site-packages/aiomysql/cursors.py:239: Warning: Table 'user' already exists await self._query(query) INFO: Application startup complete. INFO: Uvicorn running on http://0.0.0.0:9000 (Press CTRL C to quit) INFO: 192.168.2.207:54572 - "POST /api/add HTTP/1.1" 200 OK INFO: 192.168.2.207:54574 - "GET /api/get_user/1 HTTP/1.1" 200 OK INFO: 192.168.2.207:54576 - "POST /api/update_user HTTP/1.1" 200 OK INFO: 192.168.2.207:54578 - "GET /api/delete_user/2 HTTP/1.1" 200 OK

demo程序最终目录结构如下所示:

. ├── app │ ├── api │ │ ├── __init__.py │ │ └── users.py │ ├── __init__.py │ ├── models │ │ ├── __init__.py │ │ ├── models.py ├── manage.py 小结

通过前后两篇文章我们大概知道了怎么去使用fastapi和其他插件来组织和编写web应用服务,虽然这其中的细节没有我没有细说,但是我觉得目前懂得怎么用就行了,细节方面我们在慢慢的进行补充就行了,fastapi的官方文档还是比较清晰易懂的(总之一句话有手就行,哈哈哈)。谢谢你能看到结尾,希望能帮到正在学习fastapi这个框架的你吧。

栏目热文

华三路由器登录地址(华三路由器登录入口设置)

华三路由器登录地址(华三路由器登录入口设置)

打开浏览器输入路由器管理地址192.168.1.1登陆到管理界面,输入管理员密码点保存密码选择PPPOE输入办理的宽带帐...

2023-12-20 03:12:29查看全文 >>

h3c路由器怎么设置(h3c路由器恢复出厂设置方法)

h3c路由器怎么设置(h3c路由器恢复出厂设置方法)

1 H3C MSR路由器、交换机基本调试步骤(初学级别):1.1如何登陆进路由器或交换机1.1.1搭建配置环境第一次使用...

2023-12-20 02:50:02查看全文 >>

192.168.124.1是什么路由器(192.168.123.1是什么品牌的路由器)

192.168.124.1是什么路由器(192.168.123.1是什么品牌的路由器)

有些时候在使用网络的时候,如果房间比较多可能会觉得一个路由器有些不够。那么要怎么样才能在一个网络内连接多个路由器呢?今天...

2023-12-20 03:17:09查看全文 >>

无线路由器网址打不开(无线路由器可以上网但打不开)

无线路由器网址打不开(无线路由器可以上网但打不开)

电脑打不开192.168.1.1怎么办?192.168.1.1登不上怎么办?在本文中,将给大家详细介绍,用电脑设置路由器...

2023-12-20 03:22:26查看全文 >>

cad鼠标滚轮不能缩放(cad中鼠标滚轮不能放大缩小)

cad鼠标滚轮不能缩放(cad中鼠标滚轮不能放大缩小)

在CAD中滑动鼠标滚轮来缩小和放大图纸,但在缩放图纸的时候大家经常会遇到这样的情况:继续滚动滚轮,图纸却无法继续放大或...

2023-12-20 03:06:35查看全文 >>

尼龙绳是什么材料最好(什么材质的尼龙绳最好)

尼龙绳是什么材料最好(什么材质的尼龙绳最好)

在现实生活中,尼龙绳是一种非常常见的缆绳。因为它耐磨性能比较好,强度较高,特别是在运输,海事,服装或者包装上,我们经常能...

2023-12-20 02:45:59查看全文 >>

尼龙绳主要成分是无机物吗(尼龙绳是合成的还是天然的)

尼龙绳主要成分是无机物吗(尼龙绳是合成的还是天然的)

2020年高考全国卷理综化学选择题针对练习选择题训练一(化学与STSE)可能用到的相对原子质量:H-1 Li-7 C-1...

2023-12-20 03:23:55查看全文 >>

尼龙绳的成分是什么(手术用的尼龙绳是不是很坚硬)

尼龙绳的成分是什么(手术用的尼龙绳是不是很坚硬)

今天(22日)是第52个世界地球日主题为“珍爱地球 人与自然和谐共生”我们想和大家分享一个一博主在不久前晒出的真实故事1...

2023-12-20 03:16:48查看全文 >>

尼龙线主要成分纤维素(尼龙纤维成分是什么)

尼龙线主要成分纤维素(尼龙纤维成分是什么)

尼龙线,由单股尼龙材料,经过高温熔化,通过一个孔状模板成丝过水,然后经过2-3个轮子的拉长定型制成。杜邦公司发明尼龙,并...

2023-12-20 02:54:11查看全文 >>

尼龙绳原料是纤维素吗(尼龙绳里面含纤维和玻璃纤维吗)

尼龙绳原料是纤维素吗(尼龙绳里面含纤维和玻璃纤维吗)

7.下列生活用品中主要由合成纤维制造的是( )A尼龙绳 B宣纸 C羊绒衫 D棉衬衣正确答案 A解析(1)A.尼龙绳的主要...

2023-12-20 03:28:36查看全文 >>

文档排行