Skip to content

Instantly share code, notes, and snippets.

@GeekTree0101
Created November 11, 2018 07:51
Show Gist options
  • Save GeekTree0101/4005bfd63a1dab7f9a5f3039cf50075f to your computer and use it in GitHub Desktop.
Save GeekTree0101/4005bfd63a1dab7f9a5f3039cf50075f to your computer and use it in GitHub Desktop.
Flask Framework GET users/{user_id}, GET users/list (*Pagination) Basic Example
from flask import Blueprint, make_response, jsonify, request
from models.user import User
user_service = Blueprint("users", __name__, url_prefix="/users")
@user_service.route("/<int:id>", methods=["GET"])
def get_user(id: int):
try:
user = User.get(id)
res_obj = {
"data": {
"username": user.username,
"bio": user.bio
}
}
return make_response(jsonify(res_obj), 200)
except User.DoesNotExist:
return make_response("Not Found", 404)
@user_service.route("/<int:id>/update", methods=["POST"])
def update_user(id: int):
try:
user = User.get(id)
new_bio = str(request.form.get("bio"))
user.update(actions=[User.bio.set(new_bio)])
return make_response(jsonify({"data": {
"username": user.username,
"bio": user.bio
}}), 200)
except User.DoesNotExist:
return make_response("Not Found", 404)
@user_service.route("/list", methods=["GET"])
def get_user_list():
user_res_objects: [dict] = []
count: int = int(request.args.get("count") or 1)
after_key: int = int(request.args.get("after") or 0)
for user in User.batch_get(range(after_key, after_key + count)):
user_res_objects.append({
"id": user.id,
"username": user.username,
"bio": user.bio
})
res_obj = {"data": user_res_objects, "after": None}
if user_res_objects:
res_obj["after"] = after_key + count
return make_response(jsonify(res_obj), 200)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment