Python - FastAPI 实现 get、post 请求

这篇具有很好参考价值的文章主要介绍了Python - FastAPI 实现 get、post 请求。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

fastapi post请求,Python,常用语法,post,get,FastAPI

目录

一.引言

二.FastAPI Server 构建

1.get - read_items

2.post - create_item

3.uvicorn - run_app

三.Postman 请求

1.post - create_item

2.get - read_items

四.Requests 请求

1.post - create_item

2.get - read_items

五.总结


一.引言

前面介绍了 LLM 的相关知识,从样本加载、模型加载到后面的模型训练与模型推理,我们经历的完整的 LLM LoRA 微调与推理流程。基于前面的预训练模型,我们尝试使用 FastAPI 构建接口服务,本文主要介绍最基本的 FastAPI get、post 用法,后续介绍完整的 server 部署。

二.FastAPI Server 构建

下面我们构建一个 API 服务,共包含两个方法:

read_items - 将 items 数组的元素打印出来

create_item - 向 items 数组添加一个元素

1.get - read_items

get 方法是 HTTP 请求的一种类型,通常用语从服务器获取数据。由于 read_items 方法是从服务器获取 items 数组,所以其对应 get 请求。get 请求通常没有请求体,所有参数都放在 URL 的查询字符串中,所以存在一定的安全性问题。

# -*- coding: utf-8 -*-
from fastapi import FastAPI, Form

app = FastAPI()

# 示例数据
items = []


# GET 请求
@app.get("/items")
async def read_items():
    return items

2.post - create_item

post 方法是区别于 get 的另一种 HTTP 请求类型,通常用于向服务器发送数据。post 通常包含一个请求体,传输的参数不需要通过 '?' 显式的体现在请求的 URL 中,而是可以通过 JSON 对象传递,相对 get 方法更加安全。与 get 相比,post 操作不是幂等的,其每次执行完可能得到不同的结果,而 get 操作则通常认为是幂等的,这意味着多次执行 get 得到的结果应该是相同的。

# POST 请求
@app.post("/items")
async def create_item(item: str = Form(None)):
    items.append(item)
    return {"message": "Item created successfully: {}".format(str(item))}

这里 Post 请求成功后会有成功的提示并打印成功添加的 item。

3.uvicorn - run_app

uvicorn.run(app, host="192.XXX.XXX", port=8001) 方法是 uvicorn 的命令行接口。其中,app 是你想要运行的应用对象,对应我们上面的 FastAPI 的 get 与 post 对应的方法,host 和 port 则是服务将要监听的 IP 地址和端口。该方法会启动一个 ASGI 服务器,以指定的 host 和 port 为你的应用提供服务。后续的 HTTP 请求的 URL 也是基于上面的 host 和 port 组成。下面我们在本机起一个 FastAPI 服务。

if __name__ == '__main__':
    import uvicorn

    uvicorn.run(app, host='0.0.0.0', port=7788)

运行主函数后出现如下提示代表 Server 启动成功,我们后续对应的 HTTP 请求 URL 为图中蓝色链接 http://0.0.0.0:7788: 

fastapi post请求,Python,常用语法,post,get,FastAPI

三.Postman 请求

针对上面构建的 HTTP 服务,我们可以通过显示的 App 例如 postman 进行 get 和 post 请求。

1.post - create_item

fastapi post请求,Python,常用语法,post,get,FastAPI

打开 postman 选择 POST 命令,输入对应的 URL + 函数对应的路径,上面 get 和 post 请求对应的路径都是 URL + items,在对应 form-data 处传递要添加的 item,注意这里 key 要和函数定义的参数名称完全对应,否则会报错。执行 send 按钮发送 Http 请求,从返回的 Body 中我们看到成功添加 python 到 items 列表中。后面我们修改 value 为 'java' 和 'c++' 并依次发送 post 指令。

fastapi post请求,Python,常用语法,post,get,FastAPI

server 端也要每次请求的具体信息,status_code == 200 代表请求成功。

2.get - read_items

fastapi post请求,Python,常用语法,post,get,FastAPI

将请求模式切换为 GET,由于 get 命令未传参数,所以直接输入对应地址 Send 发送请求即可。返回的结果中包含我们上面添加的三个元素:python、java、c++。server 端也增加对应的 get 请求日志:

fastapi post请求,Python,常用语法,post,get,FastAPI

四.Requests 请求

上面 Postman 采用显式的页面方式向 server 发送 HTTP 请求并获取结果,更常规的做法是通过 requests 库使用代码发送请求并处理返回结果。

1.post - create_item

def post(text):
    url = 'http://0.0.0.0:7788/items'

    # 构建请求数据
    data = {
        'item': text
    }

    # 发送 post 请求
    response = requests.post(url=url, data=data, timeout=10)

    # 检查响应状态
    if response.status_code == 200:
        print('请求成功')
        print(response.json())
    else:
        print('请求失败,状态码:', response.status_code)

requests.post 添加对应 url 与 data,data 为 map 形式,其中要包含 post 函数对应的 key,结尾处会根据 status_code 判断请求是否成功。从 server 日志可以看出这一次 create_item 也执行成功了:

fastapi post请求,Python,常用语法,post,get,FastAPI

2.get - read_items

def get():
    url = 'http://0.0.0.0:7788/items'
    response = requests.get(url)

    if response.status_code == 200:
        data = response.json()
        print('成功获取,返回:', data)
    else:
        print('请求失败,状态码:', response.status_code)

requests.get 直接传入对应 url 即可获取对应信息:

fastapi post请求,Python,常用语法,post,get,FastAPI

server 端如下日志代表本次 get 请求成功: 

fastapi post请求,Python,常用语法,post,get,FastAPI

五.总结

上面介绍了如何使用 FastAPI 搭建简单的 Server Demo,后续基于该方法构建 LLM Server。文章来源地址https://www.toymoban.com/news/detail-753767.html

到了这里,关于Python - FastAPI 实现 get、post 请求的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【FastAPI】P3 请求与响应

    在网络通讯中, 请求(Request) 与 响应(Response) 扮演着至关重要的角色,它们构成了客户端与服务器间互动的根本理念。 请求 ,指的是客户端向服务器请求数据; 响应 ,指的是服务器发送给客户端的 HTTP 响应; 总的来说,当客户端向服务器发送一个 HTTP 请求时,服务器

    2024年02月21日
    浏览(22)
  • fastApi笔记06-请求体-多个参数

     当函数有多个请求实体(多个 Pydantic 模型参数),将使用参数名称作为请求体中的键(字段名称),并期望一个类似于以下内容的请求体  假如为了拓展先前的模型,除了user和item之外,在请求体中增加一个字段importance,需要使用Body来声明,不然会被当做查询参数  假如

    2024年02月21日
    浏览(22)
  • Web:前端常用的几种Http请求GET和POST样例

    1、简述 在Web开发过程中,少不了发起Http请求服务端的接口数据,在不同的框架中使用了不同的Http请求方式,常用的请求有fetch、 ajax、 axios、XMLHttpRequest、request,以下样例仅供参考。 2、Fetch Fetch API 是一种 JavaScript API,是一种基于 Promise 的现代API,用于在网络中发送和接收

    2024年02月07日
    浏览(31)
  • 【python】fastapi response返回文本、音视频多媒体资源实现

    HTMLResponse 是FastAPI中自带的一个响应类,用于返回HTML格式的响应。使用方法如下: 在上面的例子中,我们在装饰器中指定了 response_class=HTMLResponse ,表示我们需要返回一个HTML响应。然后在函数中,我们返回了一个HTML格式的字符串。FastAPI会自动将这个字符串封装成一个 HTMLR

    2023年04月27日
    浏览(32)
  • Python爬虫requests判断请求超时并重新post/get发送请求

    在上面的示例中,send_request_get函数接受一个URL作为参数,并可选地指定最大重试次数和超时时间。函数使用 requests.get 发送GET请求,并设置了超时时间为5秒。如果请求超时,会捕获 requests.exceptions.Timeout 异常,并输出重试信息。如果发生其他异常,会捕获 requests.exceptions.Req

    2024年02月11日
    浏览(38)
  • Qt实现HTTP的Get/Post请求

    借助Qt的NetWork模块,可以轻松的实现HTTP的Get/Post请求,而不需要再次引用像libcurl这样的第三方库。 当然,Qt的NetWork模块提供的功能远远不只是HTTP方面的。 另外,使用Qt网络模块还需要引用Qt5Network.lib库。 先构造一个QNetworkAccessManager对象,QNetworkAccessManager对象提供了发送QNe

    2024年02月07日
    浏览(37)
  • 使用Python接口自动化测试post请求和get请求,获取请求返回值

    目录 引言 请求接口为Post时,传参方法  获取接口请求响应数据 我们在做python接口自动化测试时,接口的请求方法有get,post等;get和post请求传参,和获取接口响应数据的方法; 我们在使用python中requests库做接口测试时,在做post接口测试传参的时候,需要传入请求体,我们把

    2024年02月02日
    浏览(38)
  • curl c++ 实现HTTP GET和POST请求

    环境配置 curl //DV2020T环境下此步骤可省略 https://curl.se/download/ 笔者安装为7.85.0版本 ./configure --without-ssl make sudo make install sudo rm /usr/local/lib/curl 系统也有curl库,为防止冲突,删去编译好的curl库。 对以json数据的解析使用开源项目:https://github.com/nlohmann/json cd single_include 在这个文

    2024年03月12日
    浏览(46)
  • QT实现客户端服务器HTTP(get请求、post请求)

    服务器代码如下: QtHttpForS.h QtHttpForS.cpp main.cpp QtHttpForS.ui 客户端代码: QtHttpForC.h QtHttpForC.cpp mian.cpp QtHttpForC.ui 程序运行效果: GET请求: POST请求: POST请求使用postman测试: 注意: 可以发现,在使用postman进行POST请求发送时,服务器接收到的请求头与QTSocket的POST请求的请求头

    2023年04月22日
    浏览(46)
  • 【Python爬虫开发基础⑪】requests库概述(GET和POST请求)

    🚀 个人主页 :为梦而生~ 关注我一起学习吧! 💡 专栏 :python网络爬虫从基础到实战 欢迎订阅!后面的内容会越来越有意思~ 💡 往期推荐 : ⭐️前面比较重要的 基础内容 : 【Python爬虫开发基础⑥】计算机网络基础(Web和HTTP) 【Python爬虫开发基础⑦】urllib库的基本使用

    2024年02月12日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包