from flask import abort from flask import Flask from flask import jsonify from flask import request app = Flask(__name__) posts = [] current_id = 1 def find_post(post_id): return next((post for post in posts if post["id"] == post_id), None) @app.route("/api/posts", methods=["GET"]) def get_posts(): return jsonify(posts), 200 @app.route("/api/posts/", methods=["GET"]) def get_post(post_id): post = find_post(post_id) if not post: abort(404, description="Post not found") return jsonify(post), 200 @app.route("/api/posts", methods=["POST"]) def create_post(): global current_id data = request.get_json() if not data or "title" not in data or "content" not in data: abort(400, description="Missing title or content") post = {"id": current_id, "title": data["title"], "content": data["content"]} posts.append(post) current_id += 1 return jsonify(post), 201 @app.route("/api/posts/", methods=["PUT"]) def update_post(post_id): post = find_post(post_id) if not post: abort(404, description="Post not found") data = request.get_json() if not data: abort(400, description="Missing data") post["title"] = data.get("title", post["title"]) post["content"] = data.get("content", post["content"]) return jsonify(post), 200 @app.route("/api/posts/", methods=["DELETE"]) def delete_post(post_id): post = find_post(post_id) if not post: abort(404, description="Post not found") posts.remove(post) return "", 204 if __name__ == "__main__": app.run(debug=True)