from flask import Flask, jsonify, request
app = Flask(__name__)
books = [
{"id": 1, "title": "Book 1", "author": "Author 1"},
{"id": 2, "title": "Book 2", "author": "Author 2"},
{"id": 3, "title": "Book 3", "author": "Author 3"}
]
# 获取所有图书
@app.route('/books', methods=['GET'])
def get_books():
return jsonify(books)
# 获取单个图书
@app.route('/books/', methods=['GET'])
def get_book(book_id):
book = next((book for book in books if book['id'] == book_id), None)
if book:
return jsonify(book)
else:
return jsonify({"error": "Book not found"}), 404
# 添加图书
@app.route('/books', methods=['POST'])
def add_book():
new_book = {
"id": request.json.get('id'),
"title": request.json.get('title'),
"author": request.json.get('author')
}
books.append(new_book)
return jsonify(new_book), 201
# 更新图书
@app.route('/books/', methods=['PUT'])
def update_book(book_id):
book = next((book for book in books if book['id'] == book_id), None)
if book:
book['title'] = request.json.get('title')
book['author'] = request.json.get('author')
return jsonify(book)
else:
return jsonify({"error": "Book not found"}), 404
# 删除图书
@app.route('/books/', methods=['DELETE'])
def delete_book(book_id):
book = next((book for book in books if book['id'] == book_id), None)
if book:
books.remove(book)
return jsonify({"message": "Book deleted"})
else:
return jsonify({"error": "Book not found"}), 404
if __name__ == '__main__':
app.run()
对应的测试代码
import requests
def all_book():
# 获取所有图书
response = requests.get('http://localhost:5000/books')
print(response.json())
all_book()
def one_book():
# 获取单个图书
response = requests.get('http://localhost:5000/books/1')
print(response.json())
one_book()
def add_book():
# 添加图书
new_book = {
"id": 4,
"title": "Book 4",
"author": "Author 4"
}
response = requests.post('http://localhost:5000/books', json=new_book)
print(response.json())
# add_book()
def updata_book():
# 更新图书
updated_book = {
"title": "Updated Book 4",
"author": "Updated Author 4"
}
response = requests.put('http://localhost:5000/books/4', json=updated_book)
print(response.json())
# updata_book()
def delete_book():
# 删除图书
response = requests.delete('http://localhost:5000/books/4')
print(response.json())
delete_book()