通过与 Jira 对比,让您更全面了解 PingCode

  • 首页
  • 需求与产品管理
  • 项目管理
  • 测试与缺陷管理
  • 知识管理
  • 效能度量
        • 更多产品

          客户为中心的产品管理工具

          专业的软件研发项目管理工具

          简单易用的团队知识库管理

          可量化的研发效能度量工具

          测试用例维护与计划执行

          以团队为中心的协作沟通

          研发工作流自动化工具

          账号认证与安全管理工具

          Why PingCode
          为什么选择 PingCode ?

          6000+企业信赖之选,为研发团队降本增效

        • 行业解决方案
          先进制造(即将上线)
        • 解决方案1
        • 解决方案2
  • Jira替代方案

25人以下免费

目录

python 如何写api接口

python 如何写api接口

在Python中编写API接口可以使用多种框架,其中最常用的框架有Flask和FastAPI。Flask框架简单易用、适合初学者,FastAPI性能更佳、支持异步处理。以下将详细介绍如何使用Flask和FastAPI编写API接口,并分别说明其优缺点。

一、使用Flask编写API接口

Flask是一个轻量级的WSGI框架,使用简单灵活,适合快速开发小型应用。以下是使用Flask编写API接口的步骤:

1、安装Flask

首先,需要安装Flask,可以使用pip命令进行安装:

pip install flask

2、创建Flask应用

在项目目录下创建一个Python文件,例如app.py,并导入Flask模块,创建Flask应用:

from flask import Flask, jsonify, request

app = Flask(__name__)

3、定义API路由

使用Flask的路由装饰器@app.route定义API接口,下面是一个简单的GET请求和POST请求的示例:

@app.route('/api/hello', methods=['GET'])

def hello_world():

return jsonify({'message': 'Hello, World!'})

@app.route('/api/data', methods=['POST'])

def get_data():

data = request.get_json()

return jsonify({'received_data': data})

4、运行Flask应用

最后,通过以下代码运行Flask应用:

if __name__ == '__main__':

app.run(debug=True)

完整的app.py代码如下:

from flask import Flask, jsonify, request

app = Flask(__name__)

@app.route('/api/hello', methods=['GET'])

def hello_world():

return jsonify({'message': 'Hello, World!'})

@app.route('/api/data', methods=['POST'])

def get_data():

data = request.get_json()

return jsonify({'received_data': data})

if __name__ == '__main__':

app.run(debug=True)

运行该文件后,Flask应用将会在本地服务器上启动,可以通过浏览器或Postman等工具访问API接口。

5、Flask的优缺点

优点:

  • 简单易用,适合快速开发和原型设计。
  • 文档齐全,社区活跃,有丰富的第三方扩展。

缺点:

  • 性能较低,不适合高并发场景。
  • 不支持异步处理,无法充分利用多核CPU。

二、使用FastAPI编写API接口

FastAPI是一个现代、快速(高性能)的Web框架,基于Python 3.7+类型提示,设计用于构建API。FastAPI的性能接近于NodeJS和Go,是目前性能最好的Python Web框架之一。

1、安装FastAPI和Uvicorn

首先,需要安装FastAPI和Uvicorn(ASGI服务器),可以使用pip命令进行安装:

pip install fastapi uvicorn

2、创建FastAPI应用

在项目目录下创建一个Python文件,例如main.py,并导入FastAPI模块,创建FastAPI应用:

from fastapi import FastAPI

app = FastAPI()

3、定义API路由

使用FastAPI的路径操作装饰器@app.get@app.post定义API接口,下面是一个简单的GET请求和POST请求的示例:

from pydantic import BaseModel

class Item(BaseModel):

name: str

description: str = None

price: float

tax: float = None

@app.get("/api/hello")

async def hello_world():

return {"message": "Hello, World!"}

@app.post("/api/data")

async def create_item(item: Item):

return {"received_data": item}

4、运行FastAPI应用

最后,通过以下代码运行FastAPI应用:

uvicorn main:app --reload

完整的main.py代码如下:

from fastapi import FastAPI

from pydantic import BaseModel

app = FastAPI()

class Item(BaseModel):

name: str

description: str = None

price: float

tax: float = None

@app.get("/api/hello")

async def hello_world():

return {"message": "Hello, World!"}

@app.post("/api/data")

async def create_item(item: Item):

return {"received_data": item}

运行该命令后,FastAPI应用将会在本地服务器上启动,可以通过浏览器或Postman等工具访问API接口。

5、FastAPI的优缺点

优点:

  • 性能高,接近于NodeJS和Go。
  • 支持异步处理,能够充分利用多核CPU。
  • 基于类型提示,自动生成API文档(Swagger和ReDoc)。

缺点:

  • 学习曲线稍高,适合有一定Python基础的开发者。
  • 部分第三方扩展和工具支持不如Flask丰富。

三、Flask与FastAPI的对比

1、性能对比

FastAPI的性能要优于Flask,尤其是在高并发场景下。Flask是基于WSGI(Web Server Gateway Interface)标准的同步框架,而FastAPI是基于ASGI(Asynchronous Server Gateway Interface)标准的异步框架,能够更好地利用多核CPU,提高处理效率。

2、开发体验

Flask的开发体验更为简单直观,适合快速开发和原型设计。其文档齐全,社区活跃,有丰富的第三方扩展。FastAPI则基于Python 3.7+类型提示,自动生成API文档,能够提高开发效率和代码质量,但学习曲线稍高。

3、社区支持

Flask作为一个老牌框架,社区支持丰富,有大量的教程和示例代码。FastAPI虽然较为新颖,但发展迅速,社区也在不断壮大,未来前景广阔。

四、Flask与FastAPI的应用场景

1、小型项目或快速原型设计

对于小型项目或快速原型设计,Flask是一个不错的选择。它简单易用,能够快速搭建起一个API接口。同时,Flask的扩展性强,可以根据需求添加各种功能。

2、高并发场景或需要异步处理的项目

对于高并发场景或需要异步处理的项目,FastAPI是一个更好的选择。它能够充分利用多核CPU,提高处理效率。同时,FastAPI基于类型提示,能够自动生成API文档,提高开发效率和代码质量。

3、需要高性能和可靠性的项目

对于需要高性能和可靠性的项目,FastAPI也是一个不错的选择。它的性能接近于NodeJS和Go,能够满足高性能和高可靠性的需求。

五、实际案例

1、使用Flask开发一个简单的任务管理系统

我们将使用Flask开发一个简单的任务管理系统,包括创建任务、获取任务列表、更新任务和删除任务的API接口。

1.1、安装依赖

pip install flask

1.2、创建Flask应用

在项目目录下创建一个Python文件,例如app.py,并导入Flask模块,创建Flask应用:

from flask import Flask, jsonify, request

app = Flask(__name__)

tasks = []

1.3、定义API路由

@app.route('/api/tasks', methods=['GET'])

def get_tasks():

return jsonify({'tasks': tasks})

@app.route('/api/tasks', methods=['POST'])

def create_task():

task = request.get_json()

tasks.append(task)

return jsonify({'task': task}), 201

@app.route('/api/tasks/<int:task_id>', methods=['PUT'])

def update_task(task_id):

task = request.get_json()

tasks[task_id] = task

return jsonify({'task': task})

@app.route('/api/tasks/<int:task_id>', methods=['DELETE'])

def delete_task(task_id):

tasks.pop(task_id)

return jsonify({'result': True})

1.4、运行Flask应用

if __name__ == '__main__':

app.run(debug=True)

完整的app.py代码如下:

from flask import Flask, jsonify, request

app = Flask(__name__)

tasks = []

@app.route('/api/tasks', methods=['GET'])

def get_tasks():

return jsonify({'tasks': tasks})

@app.route('/api/tasks', methods=['POST'])

def create_task():

task = request.get_json()

tasks.append(task)

return jsonify({'task': task}), 201

@app.route('/api/tasks/<int:task_id>', methods=['PUT'])

def update_task(task_id):

task = request.get_json()

tasks[task_id] = task

return jsonify({'task': task})

@app.route('/api/tasks/<int:task_id>', methods=['DELETE'])

def delete_task(task_id):

tasks.pop(task_id)

return jsonify({'result': True})

if __name__ == '__main__':

app.run(debug=True)

运行该文件后,Flask应用将会在本地服务器上启动,可以通过Postman等工具访问API接口。

2、使用FastAPI开发一个简单的任务管理系统

我们将使用FastAPI开发一个简单的任务管理系统,包括创建任务、获取任务列表、更新任务和删除任务的API接口。

2.1、安装依赖

pip install fastapi uvicorn

2.2、创建FastAPI应用

在项目目录下创建一个Python文件,例如main.py,并导入FastAPI模块,创建FastAPI应用:

from fastapi import FastAPI

from pydantic import BaseModel

app = FastAPI()

tasks = []

class Task(BaseModel):

title: str

description: str = None

completed: bool = False

2.3、定义API路由

@app.get("/api/tasks")

async def get_tasks():

return {"tasks": tasks}

@app.post("/api/tasks", status_code=201)

async def create_task(task: Task):

tasks.append(task)

return {"task": task}

@app.put("/api/tasks/{task_id}")

async def update_task(task_id: int, task: Task):

tasks[task_id] = task

return {"task": task}

@app.delete("/api/tasks/{task_id}")

async def delete_task(task_id: int):

tasks.pop(task_id)

return {"result": True}

2.4、运行FastAPI应用

uvicorn main:app --reload

完整的main.py代码如下:

from fastapi import FastAPI

from pydantic import BaseModel

app = FastAPI()

tasks = []

class Task(BaseModel):

title: str

description: str = None

completed: bool = False

@app.get("/api/tasks")

async def get_tasks():

return {"tasks": tasks}

@app.post("/api/tasks", status_code=201)

async def create_task(task: Task):

tasks.append(task)

return {"task": task}

@app.put("/api/tasks/{task_id}")

async def update_task(task_id: int, task: Task):

tasks[task_id] = task

return {"task": task}

@app.delete("/api/tasks/{task_id}")

async def delete_task(task_id: int):

tasks.pop(task_id)

return {"result": True}

运行该命令后,FastAPI应用将会在本地服务器上启动,可以通过Postman等工具访问API接口。

六、总结

本文介绍了如何使用Flask和FastAPI编写API接口,分别展示了两个框架的优缺点及其适用场景。Flask适合快速开发和原型设计,而FastAPI则适合高并发场景和需要异步处理的项目。根据项目需求选择合适的框架,可以提高开发效率和代码质量。

此外,本文还通过实际案例展示了如何使用Flask和FastAPI开发一个简单的任务管理系统,读者可以根据实际需求进行修改和扩展。希望本文能对读者有所帮助,并在实际开发中提供参考。

相关问答FAQs:

如何选择合适的框架来编写Python API接口?
在编写Python API接口时,选择合适的框架至关重要。常用的框架包括Flask和Django REST Framework。Flask轻量且灵活,适合快速开发和小型应用;而Django REST Framework功能强大,适合大型项目。根据项目需求、团队技术栈和开发速度来选择合适的框架会使开发过程更加顺利。

如何测试我创建的Python API接口?
测试API接口可以通过多种方式进行。使用Postman或Insomnia等工具,可以手动发送请求并查看响应。此外,编写单元测试也是一种有效的方法,使用Python中的unittest或pytest库,可以模拟请求并验证响应的正确性。确保API的各个端点在不同情况下都能正常工作是至关重要的。

在Python API接口中如何处理错误和异常?
在API接口中处理错误和异常是提高用户体验的重要环节。可以通过定义自定义的错误处理器来捕获特定的异常,并返回适当的HTTP状态码和错误信息。例如,可以使用Flask的errorhandler装饰器或Django的Middleware来实现。同时,保持错误信息的简洁和清晰,让用户能够快速理解问题所在。

相关文章