其他应用程序调用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]
})