当前位置:   article > 正文

fastapi系列1-基础知识_fastapi从0到1

fastapi从0到1

学习资料

官网:https://fastapi.tiangolo.com/
github:https://github.com/tiangolo/fastapi
视频教程【独家新技术】从0到1学习 FastAPI 框架的所有知识点
依赖底层包:https://www.starlette.io/
轻松上手Python的Web神器:FastAPI教程:https://zhuanlan.zhihu.com/p/624779536

基础笔记

有入参有出参, 定义好数据接口即可

数据类型定义,依托starlette

在这里插入图片描述

路由分组

路由分组
在 FastAPI 中,您可以将相关的路由组织到一个分组中,来管理和维护代码结构。您可以使用 FastAPI 提供的 APIRouter 类来创建路由分组。

以下是一个简单的 FastAPI 路由分组示例:

from fastapi import FastAPI, APIRouter

app = FastAPI()

router = APIRouter()

@router.get("/items/")
async def read_items():
    return [{"item_id": "1"}, {"item_id": "2"}]

@router.get("/items/{item_id}")
async def read_item(item_id: str):
    return {"item_id": item_id}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

app.include_router(router, prefix=“/api/v1”)
在这个示例中,我们使用 APIRouter 创建一个名为 router 的路由分组。然后,我们定义了两个路由,/items/ 和 /items/{item_id},并指定了不同的 HTTP 请求方法和相应的函数实现。最后使用 app.include_router 将 router 路由分组上的路由挂载在 /api/v1 路由下。

通过使用路由分组,可以将各个子模块的路由规则、处理方法等进行分组管理,大大提高了代码的可读性和可维护性。

以上是对 FastAPI 的增删改查操作和路由分组的简要介绍,FastAPI 还有很多其他功能和特性,以及更完整的实践案例。如果您有进一步的问题或需要,欢迎咨询。

前端

在前端访问 FastAPI 路由分组时,您需要使用正确的 URL 地址和 HTTP 请求方法,并传递必要的参数进行访问。

以我们之前的示例为例,在 /api/v1/items/ 路由分组下,我们定义了两个路由:

GET /api/v1/items/: 获取所有的数据。
GET /api/v1/items/{item_id}: 获取具体的数据。
对于这两个路由,前端可以通过以下方式进行访问:

获取所有的数据
使用 HTTP 的 GET 请求方法,以 http://<your_server_address>/api/v1/items/ 为 URL 地址,即可获取所有数据。示例代码如下:

fetch(‘http://<your_server_address>/api/v1/items/’)
.then(res => res.json())
.then(data => console.log(data))
.catch(error => console.log(error))
此处使用了 JavaScript fetch API 发起 GET 请求获取所有的数据,并在控制台打印服务器返回的数据。

获取具体的数据
使用 HTTP 的 GET 请求方法,将 {item_id} 替换成实际的数字 ID,并以 http://<your_server_address>/api/v1/items/{item_id} 为 URL 地址,即可获取具体的数据。示例代码如下:

fetch(‘http://<your_server_address>/api/v1/items/1’)
.then(res => res.json())
.then(data => console.log(data))
.catch(error => console.log(error))
此处使用了 JavaScript fetch API 发起 GET 请求获取 ID 为 1 的数据,并在控制台打印服务器返回的数据。

除了 GET 请求方法外,还有其他的 HTTP 请求方法可以用于访问接口,例如 POST、PUT、DELETE 等,具体使用方法类似。在发送请求时需要注意传递的参数和格式,以及在响应后正确处理返回的数据。

需要注意的是,在使用 FastAPI 的路由分组时要考虑好路由命名和前端对接的方案,以确保各个模块之间的协作顺畅。

上面的增删改查,前端是怎么对接和访问的,怎么感觉put和post是一样的?

感谢您的提问。POST和PUT方法确实在一些场景下很相似,但它们在语义上还是有所区别的。

在传统的 Web 应用中,通常会使用POST方法来创建新的资源,使用PUT方法来更新已有的资源。POST方法是非幂等的(Non-idempotent),即多次调用该方法,每次调用都会创建一份新的资源;而PUT方法是幂等的(Idempotent),即多次调用该方法,只会更新同一份资源,而不会产生多个副本。

当然,在某些场景下,PUT和POST方法可能会产生相似或相同的效果,例如对于一份个人简历的更新,可能使用PUT方法更新已有的简历,也可以使用POST方法创建一份新的简历并保存,这两种方法实现的效果是相同的。

下面是一些前端对接增删改查的示例代码,供您参考:

新增数据(POST)
在前端使用 HTTP POST 方法新增数据时,需要通过发送请求体(Request Body)的方式将数据发送给服务器。以 Axios HTTP 客户端为例,示例代码如下:

axios.post(‘/api/v1/items’, {name: ‘fastapi’, price: 10.99, is_offer: true})
.then(response => console.log(response.data))
.catch(error => console.log(error))
此处使用 Axios POST 方法向 /api/v1/items URL 地址发送数据,请求体为一个 JSON 对象。

获取数据(GET)
在前端使用 HTTP GET 方法获取数据时,只需要向服务器发送 GET 请求,等待服务器返回数据即可。以 jQuery Ajax 为例,示例代码如下:

$.ajax({
url: ‘/api/v1/items’,
type: ‘GET’,
success: function(data) {
console.log(data)
},
error: function(error) {
console.log(error)
}
})
更新数据(PUT)
在前端使用 HTTP PUT 方法更新数据时,同样需要通过发送请求体的方式,将需要更新的数据发送给服务器。以 Fetch API 为例,示例代码如下:

fetch(/api/v1/items/${item_id}, {
method: ‘PUT’,
headers: {‘Content-Type’: ‘application/json’},
body: JSON.stringify({name: ‘fastapi2’, price: 15.99, is_offer: false})
})
.then(res => res.json())
.then(data => console.log(data))
.catch(error => console.log(error))
此处使用 Fetch API PUT 方法向 /api/v1/items/{item_id} URL 地址发送 PUT 请求,请求体为一个 JSON 对象。需要注意的是,由于 Fetch API 的特性,需要手动指定请求头(headers)和请求体的格式。

删除数据(DELETE)
在前端使用 HTTP DELETE 方法删除数据时,只需要向服务器发送 DELETE 请求即可。以 Vue.js Http 模块为例,示例代码如下:

this. h t t p . d e l e t e ( ‘ / a p i / v 1 / i t e m s / http.delete(`/api/v1/items/ http.delete(‘/api/v1/items/{item_id}`)
.then(response => console.log(response.body))
.catch(error => console.log(error))
此处使用 Vue.js Http 模块 DELETE 方法向 /api/v1/items/{item_id} URL 地址发送 DELETE 请求,等待服务器响应。

以上是一个简单的示例,您可以根据需要选择适当的 HTTP 客户端库和对应的函数进行使用。希望对您有所帮助。

是不是用post就可以实现所有的增删改查了

可以说,使用 HTTP POST 方法可以支持创建、更新和删除数据的操作,但是并不符合 RESTful 风格规范且在实际开发中不推荐这样做。

在标准的 RESTful 风格中,通常使用不同的 HTTP 请求方法来对应不同的操作:

POST:用于在服务器创建新的资源。
GET:用于从服务器读取资源。
PUT:用于更新指定的资源。
DELETE:用于删除指定的资源。
在一些场景下,可以将 PATCH 方法用于部分更新资源并保持幂等性。

因此,您在实际开发中应该根据不同的操作选择不同的 HTTP 请求方法。其中,使用 POST 方法代替 PUT 或 DELETE 方法可能会导致一些潜在的问题,例如:

不安全:POST 方法不像 PUT 或 DELETE 方法那样幂等,因此可能会在重试操作时带来风险。
代码混淆:使用同一 HTTP 方法发送多种操作不利于代码的可读性和可维护性。
为了使用正确的 HTTP 方法,并避免代码混淆,建议您在开发时遵循 RESTful 风格规范,并在应用程序的核心代码中嵌入正确的 HTTP 请求方法。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/416445
推荐阅读
相关标签
  

闽ICP备14008679号