LU03.L01 - Bibliothek

app.py
from flask import Flask
from flask_restful import Api
from flask_cors import CORS
 
from resource.book_resource import BookResource
from resource.library_resource import LibraryResource
 
 
def create_app():
    app = Flask(__name__)
    CORS(app)
    api = Api(app)
 
    api.add_resource(LibraryResource, '/booklist')
    api.add_resource(BookResource, '/book/<book_uuid>', '/book')
    return app
 
if __name__ == '__main__':
    app = create_app()
    app.run(debug=True)
resource/book_resource.py
import uuid
 
from flask import make_response
from flask_restful import Resource, reqparse
 
from model.book import Book
from model.library import Library
 
 
class BookResource(Resource):
    def __init__(self):
        self.parser = reqparse.RequestParser()
        self.parser.add_argument('title', location='form', default=None, help='book title')
        self.parser.add_argument('isbn', location='form', default=None, help='isbn')
        self.parser.add_argument('author', location='form', default=None, help='author')
        self.parser.add_argument('price', location='form', default=None, help='price')
 
    def get(self, book_uuid):
        book = Library().get_book_by_uuid(book_uuid)
        if book is None:
            return make_response('[]', 404)
        else:
            return make_response(book.to_json(), 200)
 
    def put(self, book_uuid):
        """
        update an existing book
        """
        library = Library()
        book = library.get_book_by_uuid(book_uuid)
        if book is None:
            return make_response('', 404)
 
        args = self.parser.parse_args()
        book.title = args.title
        book.isbn = args.isbn
        book.author = args.author
        book.price = float(args.price)
        library.save_books()
        return make_response('', 200)
 
    def post(self):
        """
        inserts a new book
        """
        library = Library()
        book = Book()
        args = self.parser.parse_args()
        book.book_uuid = str(uuid.uuid4())
        book.title = args.title
        book.isbn = args.isbn
        book.author = args.author
        book.price = float(args.price)
        library.book_list.append(book)
        library.save_books()
        return make_response(book.book_uuid, 201)
 
    def delete(self, book_uuid):
        """
        deletes a book from the library
        """
        library = Library()
        book = library.get_book_by_uuid(book_uuid)
        if book is None:
            return make_response('', 404)
        position = library.book_list.index(book)
        library.book_list.pop(position)
        library.save_books()
        return make_response('', 200)
resource/library_resource.py
from flask import make_response
from flask_restful import Resource
 
from model.library import Library
 
 
class LibraryResource(Resource):
    def get(self):
        library = Library()
        books = library.book_list
        http_status = 200
        return make_response(
            books, http_status
        )
  • modul/m321/learningunits/lu03/loesungen/buchliste.txt
  • Zuletzt geändert: 2025/02/05 10:55
  • von msuter