Python Flask库编写RESTful风格的图书增删改查接口

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()

你可能感兴趣的:(#,Flask,接口测试,python)