使用Python和Flask构建简单的RESTful API

news/2024/9/23 1:05:57/

目录

环境准备

创建Flask应用

运行Flask应用

扩展功能:处理POST请求

注意事项


e78b88005ced4620af446140166c5e3c.png

在Web开发中,RESTful API是一种广泛使用的架构风格,它允许客户端和服务器之间通过HTTP请求进行通信。Python的Flask框架以其轻量级和易于上手的特点,成为了快速构建RESTful API的流行选择。本文将引导你通过几个简单的步骤,使用Flask来创建一个简单的RESTful API。

环境准备

在开始之前,请确保你的Python环境中已经安装了Flask。如果未安装,可以通过pip命令进行安装:

pip install Flask

创建Flask应用

首先,我们需要创建一个Python文件,比如叫做app.py,并在这个文件中设置Flask应用。

python">from flask import Flask, jsonify, request  app = Flask(__name__)  # 定义一个简单的路由来返回欢迎信息  
@app.route('/')  
def hello_world():  return 'Hello, Flask!'  # 定义一个RESTful API路由来处理GET请求  
@app.route('/api/items', methods=['GET'])  
def get_items():  # 这里只是返回一个静态的列表作为示例  items = [  {"id": 1, "name": "Item 1", "price": 10.0},  {"id": 2, "name": "Item 2", "price": 20.0},  {"id": 3, "name": "Item 3", "price": 30.0}  ]  return jsonify(items)  if __name__ == '__main__':  app.run(debug=True)

运行Flask应用

保存app.py文件后,在命令行中运行以下命令来启动Flask应用:

python">python app.py

默认情况下,Flask应用将在本地机器上的5000端口启动。你可以通过访问http://127.0.0.1:5000/来查看欢迎信息,或者通过访问http://127.0.0.1:5000/api/items来调用我们的RESTful API并获取商品列表。

扩展功能:处理POST请求

接下来,我们可以扩展我们的API,以支持POST请求,允许客户端向我们的服务添加新的商品。

python"># 定义一个RESTful API路由来处理POST请求  
@app.route('/api/items', methods=['POST'])  
def add_item():  # 从请求体中获取JSON数据  data = request.get_json()  new_item = {  "id": len(items) + 1,  # 假设id是递增的,实际应用中可能需要更复杂的逻辑  "name": data['name'],  "price": data['price']  }  # 假设items是一个全局变量(实际中应考虑使用数据库等持久化存储)  items.append(new_item)  # 注意:这里仅作为示例,实际中不应直接修改全局变量  return jsonify(new_item), 201  # 201状态码表示已创建  # 注意:为了保持示例的简洁性,这里并没有展示如何声明items全局变量  
# 在实际应用中,你应该将商品数据存储在一个数据库或其他持久化存储中

注意事项

  1. 安全性:上述示例没有包括任何安全措施,如身份验证、授权或输入验证。在生产环境中,这些是非常重要的。
  2. 数据持久化:示例中使用了一个全局变量来存储商品数据,这在实际应用中是不可行的。你应该使用数据库或其他持久化存储来存储数据。
  3. 错误处理:示例中没有包含错误处理逻辑。在生产环境中,你应该添加适当的错误处理来确保API的健壮性。

 


http://www.ppmy.cn/news/1508831.html

相关文章

开发笔记:uniapp+vue+微信小程序 picker +后端 省市区三级联动

写在前面 未采用: 前端放置js 或者 json文件进行 省市区三级联动 采用: 前端组件 后端接口实现三级联动 原因:首先微信小程序有大小限制,能省则省,其次:方便后台维护省市区数据,完整省市区每年更新好像…

培训第二十四天(python基础学习)

上午 python开发工具: 1、安装自带的ide 2、pycharm(付费) 3、anaconda 1、环境 python2内置,需要换为python3 [root3 ~]# pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple/ some-package //切换国内下载[root3 ~]# yum lis…

基于单片机的瓦斯浓度检测报警装置的设计与仿真

摘 要: 针 对 煤矿 安全 生产 实际 , 文章首先 介绍 了采用 单 片 机 的煤矿 瓦斯 浓 度检 测 报 警 装 置的整 体 构 架 , 然 后 对 煤矿 瓦斯 浓 度检 测 报 警 装 置 的 各 个 部 分 硬 件 进 行 了 详细 的设计, 给 出了煤矿瓦斯浓 度检…

MoonBit 周报 Vol.53:新增高级循环语法、引入字符串插值、MoonBit AI 支持代码解释!

weekly 2024-08-05 MoonBit更新 添加了基于 Iter 和 Iter2 类型的 for .. in 循环支持: fn main {for x in [ 1, 2, 3 ] {println(x)}for k, v in { "x": 1, "y": 2 } {println("\{k} > \{v}")} }for 与 in 之间可以使用 1&…

SuccBI+低代码文档中心 — 可视化分析(仪表板)(上)

有关仪表板的设计器: 查询设置 由于仪表板的设计器是所见即所得的,可以将当前制作的内容和数据的查询结果实时展示在界面中,当引入到仪表板的模型数据量较大时,为了提高设计器界面的查询性能,提供了以下两种方法&…

OpenCV图像滤波(15)梯度计算函数Scharr()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 函数使用 Scharr 运算符计算图像的第一个 x- 或 y- 空间导数。 调用 Scharr(src, dst, ddepth, dx, dy, scale, delta, borderType) \texttt{Sc…

2015款到18款奔驰GLC升级为2021款的HU6主机后,实现了触摸屏人机交互和Carplay功能

奔驰GLC是北京奔驰生产的一款中型SUV。有车主将2015款奔驰GLC升级为2021款的HU6主机后,实现了触摸屏人机交互和Carplay功能。该车主分享了使用体验: • Carplay功能:可以直接在车机大屏幕上显示导航、音乐和电话信息,让用户在开车…

[Linux] LVM挂载的硬盘重启就掉的问题解决

问题:系统重启后挂在逻辑卷的盘会掉(必现) 环境:SUSE Linux 11 SP4 原因:boot.lvm是关闭的 解决:boot.lvm设置开启 参考资料: linux下lvm状态Not avaliable问题排查及处理(常见Suse操作系统…