码农之家

专注优质代码开发,为软件行业发展贡献力量

其他应用程序调用python 实现的 api接口

下面我将为你介绍如何使用 Flask 框架实现一个简单的 Python API。Flask 是一个轻量级的 Web 框架,非常适合快速实现 RESTful API。

实现一个简单的 Python API
首先,确保你已经安装了 Flask:pip install flask

下面是一个完整的示例代码,实现了一个简单的图书管理 API:

from flask import Flask, jsonify, request, abort app = Flask(__name__) # 模拟数据库中的图书数据 books = [ { 'id': 1, 'title': 'Python Crash Course', 'author': 'Eric Matthes', 'year': 2015 }, { 'id': 2, 'title': 'Fluent Python', 'author': 'Luciano Ramalho', 'year': 2015 }, { 'id': 3, 'title': 'Effective Python', 'author': 'Brett Slatkin', 'year': 2015 } ] # 获取所有图书 @app.route('/api/books', methods=['GET']) def get_books(): return jsonify({'books': books}) # 获取单个图书 @app.route('/api/books/<int:book_id>', methods=['GET']) def get_book(book_id): book = next((book for book in books if book['id'] == book_id), None) if book is None: abort(404) return jsonify({'book': book}) # 添加新图书 @app.route('/api/books', methods=['POST']) def add_book(): if not request.json or 'title' not in request.json: abort(400) new_book = { 'id': max(book['id'] for book in books) + 1, 'title': request.json['title'], 'author': request.json.get('author', ''), 'year': request.json.get('year', 0) } books.append(new_book) return jsonify({'book': new_book}), 201 # 更新图书信息 @app.route('/api/books/<int:book_id>', methods=['PUT']) def update_book(book_id): book = next((book for book in books if book['id'] == book_id), None) if book is None: abort(404) if not request.json: abort(400) book['title'] = request.json.get('title', book['title']) book['author'] = request.json.get('author', book['author']) book['year'] = request.json.get('year', book['year']) return jsonify({'book': book}) # 删除图书 @app.route('/api/books/<int:book_id>', methods=['DELETE']) def delete_book(book_id): global books books = [book for book in books if book['id'] != book_id] return jsonify({'result': True}) if __name__ == '__main__': app.run(debug=True)

实现一个简单多参数的 Python API

需要增加引用:from flask import Flask, request, jsonify

@app.route('/api/books', methods=['GET']) def search_books(): """搜索图书(支持多参数查询)""" # 获取查询参数,设置默认值 author = request.args.get('author', '') year = request.args.get('year', type=int) # 自动转换为整数 limit = request.args.get('limit', 10, type=int) # 根据参数过滤图书(示例逻辑) filtered_books = books if author: filtered_books = [b for b in filtered_books if author in b['author']] if year: filtered_books = [b for b in filtered_books if b['year'] == year] return jsonify({ 'query': {'author': author, 'year': year, 'limit': limit}, 'books': filtered_books[:limit] })

测试 API

启动应用后,可以通过以下方式测试:

# 基本请求 curl "http://localhost:5000/api/books?author=python&year=2&limit=5" # 省略部分参数(使用默认值) curl "http://localhost:5000/api/books?author=flask"

API 功能说明

这个 API 提供了以下几个端点:

  1. 获取所有图书
    • URL: GET /api/books
    • 响应:返回所有图书的列表
  2. 获取单个图书
    • URL: GET /api/books/<id>
    • 响应:返回指定 ID 的图书信息
  3. 添加新图书
    • URL: POST /api/books
    • 请求体:JSON 格式的图书信息(至少包含 title 字段)
    • 响应:返回新添加的图书信息
  4. 更新图书信息
    • URL: PUT /api/books/<id>
    • 请求体:JSON 格式的要更新的字段
    • 响应:返回更新后的图书信息
  5. 删除图书
    • URL: DELETE /api/books/<id>
    • 响应:返回操作结果(True/False)

运行和测试 API

  1. 运行 API
    • 保存上面的代码为 app.py
    • 在终端中运行:python app.py
    • API 将在 http://localhost:5000 上运行
  2. 测试 API
    • 可以使用工具如 curl、Postman 或浏览器来测试 API
    • 例如,在浏览器中访问 http://localhost:5000/api/books 可以获取所有图书

这个示例展示了如何使用 Flask 实现一个简单的 RESTful API。在实际应用中,你可能需要添加数据库支持、身份验证、输入验证等功能。

AI探究员大白

0 评论数