# -*- coding: utf-8 -*- from flask import Flask, request, jsonify, abort from functools import lru_cache from cppy.cp_util import * from functools import cache app = Flask(__name__) # 模拟数据库 books_db = [] # 用于缓存用户数据库的装饰器 @lru_cache(maxsize=None) def get_books_db(): return books_db #查询所有资源 @app.route('/books', methods=['GET']) def get_books(): return jsonify(get_books_db()) #查询某个资源 @app.route('/books/', methods=['GET']) def get_book(book_id): book = next((book for book in get_books_db() if book['id'] == book_id), None) if book is None: abort(404) return jsonify(book['content']) # 创建或更新新资源 @app.route('/books/', methods=['PUT']) def update_book(book_id): global books_db book_to_update = request.json print(book_to_update) books_db = get_books_db() book = next((book for book in books_db if book['id'] == book_id), None) if book is None: # 如果资源不存在,创建新资源 books_db.append(book_to_update) else: # 如果资源存在,更新资源 book.update(book_to_update) # 清除缓存的数据库 cache.delete(get_books_db) return jsonify(books_db), 200 #操作一个资源 @app.route('/books//word_frequency', methods=['GET']) def word_frequency(book_id): global books_db book = next((book for book in get_books_db() if book['id'] == book_id), None) filepath = book['content'] word_list = extract_file_words(filepath) word_frequency = get_frequencies(word_list) word_frequency = sort_dict(word_frequency) print_word_freqs(word_frequency) return jsonify(word_frequency), 200 @app.route('/books/', methods=['DELETE']) def delete_book(book_id): global books_db books_db = [book for book in books_db if book['id'] != book_id] if len(books_db) == len([l for l in books_db if l['id'] == book_id]): abort(404) # 用户不存在 return jsonify({'message': f'book {book_id} deleted'}), 200 if __name__ == '__main__': app.run(debug=True)