Skip to content

Examples«

On this page you will find examples on how to create, update and delete posts with the use of Flask as a web server. The server uses standard REST API practices with the following endpoints and methods.

ROUTE METHOD DESCRIPTION
/post GET Get all posts
/post POST Create new post
/post/<string:post_id> GET Get single post with ID
/post/<string:post_id> PUT Update post with ID
/post/<string:post_id> DELETE Delete post with ID

Setup and Imports«

routes.py
import json
from flask import request, jsonify, Flask

app = Flask(__name__)

# Create manager instance used for all operations
post_manager = PostManager.setup_local()

List Posts«

routes.py
@app.route("/post", methods=["GET", "POST"])
def list_post():
    if request.method == "GET":

        # Create empty list
        post_list = []

        # Get post index
        post_meta_data_list = post_manager.index


        # Append each post to post list
        for meta_data in post_meta_data_list:
            post = post_manager.get_by_id(meta_data["id"])

            post_list.append(post)

        return jsonify(post_list)

    ...
    # other code
    ...

Create Post«

Media

JavaScript FileReader.readAsDataURL()() method reference

routes.py
@app.route("/post", methods=["GET","POST"])
def list_post():
    ...
    # other code
    ...

    elif request.method == "POST":
        # Get data from request
        form_data = json.loads(request.get_data().decode("utf-8"))
        content = form_data.get('content)
        meta_data = {
            'title': form_data.get('title),
            'category' : form_data.get('category'),
            'author': form_data.get('author')
        }

        # Create post
        new_post = post_manager.new_post(meta_data, content)

        # Add media if needed
        media = form_data.get('media')
        for media_name, media_bytes in media.items():
            new_post.add_media(media, media_bytes)

        # Save post
        post_manager.save_post(new_post)

        # Return post json
        return jsonify(new_post.to_json())

Get Single Post«

routes.py
@main.route("/post/<string:post_id>", methods=["GET", "PUT", "DELETE"])
def single_post(post_id):
    if request.method == "GET":
        # Get post from storage
        post = post_manager.get_by_id(post_id)

        # Return json
        return jsonify(post.to_json())

Update Post«

routes.py
@main.route("/post/<string:post_id>", methods=["GET", "PUT", "DELETE"])
def single_post(post_id):
    ...
    # other code
    ...

    elif request.method == "PUT":
        # Get post from storage
        post = post_manager.get_by_id(post_id)

        # Get data from request
        form_data = json.loads(request.get_data().decode("utf-8"))
        content = form_data.get('content)
        meta_data = {
            'title': form_data.get('title),
            'category' : form_data.get('category'),
            'author': form_data.get('author')
        }

        # Update post
        post.update_meta_data(meta_data)
        post.update_content(content)

        # Update media if needed
        # Currently any media with the same name is overwritten
        media = form_data.get('media')
        for media_name, media_bytes in media.items():
            new_post.add_media(media, media_bytes)

        # Save post
        post_manager.save_post(post)

        # Return post json
        return jsonify(post.to_json())

Delete Post«

routes.py
@main.route("/post/<string:post_id>", methods=["GET", "PUT", "DELETE"])
def single_post(post_id):
    ...
    # other code
    ...

    elif request.method == "DELETE":
        post_manager.delete_post(post_id)

        data = {
            "deleted": True,
        }

        return jsonify(data)
Back to top