def v1_blueprint(app): blueprint = APIBlueprint('v1', __name__, url_prefix='/v1') @blueprint.route('/foo') def foo(): return 'Foo' return blueprint
def test_deprecated_routes(app, v1_blueprint): inherited = APIBlueprint('v2', __name__, url_prefix='/v2', inherit_from=v1_blueprint, remapping={'/foo': None}) app.register_blueprint(inherited) app.register_blueprint(v1_blueprint) v1_response = app.test_client().get('v1/foo') assert v1_response.data == six.b('Foo') deprecated_response = app.test_client().get('v2/foo') assert deprecated_response.status_code == 404
def test_blueprint_with_inheritance(app, v1_blueprint): """ Verify that parent blueprint routes are copied when a blueprint is initialized with an `inherit_from` argument. """ inherited = APIBlueprint('v2', __name__, url_prefix='/v2', inherit_from=v1_blueprint) app.register_blueprint(v1_blueprint) app.register_blueprint(inherited) v1_response = app.test_client().get('/v1/foo') assert v1_response.data == six.b('Foo') v2_response = app.test_client().get('/v2/foo') assert v2_response.data == v1_response.data
def test_same_rule_can_be_registered_with_different_methods(app): blueprint = APIBlueprint('blueprint', __name__) @blueprint.route('/foo', methods=['GET']) def foo(): return 'Foo' @blueprint.route('/foo', methods=['POST']) def foo_post(): return 'Foo POST' app.register_blueprint(blueprint) get_response = app.test_client().get('/foo') assert get_response.data == six.b('Foo') post_response = app.test_client().post('/foo') assert post_response.data == six.b('Foo POST')
def test_overloaded_route(app, v1_blueprint): """ Verify that an inherited blueprint can overload its routes.. """ inherited = APIBlueprint('v2', __name__, url_prefix='/v2', inherit_from=v1_blueprint) @inherited.route('/foo') def overloaded_foo(): return 'Overloaded Foo' app.register_blueprint(v1_blueprint) app.register_blueprint(inherited) v1_response = app.test_client().get('/v1/foo') assert v1_response.data == six.b('Foo') v2_response = app.test_client().get('/v2/foo') assert v2_response.data == six.b('Overloaded Foo')
import kuas_api.modules.error as error from flask_apiblueprint import APIBlueprint from kuas_api.modules.json import jsonify # Create v2 blueprint api_v2 = APIBlueprint('api_v2', __name__, subdomain='', url_prefix='/v2') def get_git_revision_short_hash(): import subprocess return subprocess.check_output(['git', 'rev-parse', '--short', 'HEAD']).decode("utf-8").strip("\n") @api_v2.route('/') def version_2(): """Return API version """ return jsonify(name="kuas-api version 2.", version="2", server_revision=get_git_revision_short_hash(), endpoints="https://kuas.grd.idv.tw:14769/v2/") @api_v2.errorhandler(401) def unauthorized_error(err): return error.error_handle(status=401, developer_message="token expired", user_message="token expired", error_code=401)
from flask import jsonify from flask_apiblueprint import APIBlueprint from sample_api import User, Media from sample_api.views.v1 import api_v1 remapping = {'/users/list/': '/users/'} api_v2 = APIBlueprint('api_v2', __name__, subdomain='', url_prefix='/api/v2', inherit_from=api_v1, remapping=remapping) @api_v2.route('/user/<user_id>/') def user_info(user_id): username = User.query.get(user_id).username firstname = User.query.get(user_id).firstname return jsonify(data=dict(username=username, firstname=firstname))
from flask_apiblueprint import APIBlueprint from kuas_api.modules.json import jsonify from .doc import auto # Create v2 blueprint api_v2 = APIBlueprint( 'api_v2', __name__, subdomain='', url_prefix='/v2') def get_git_revision_short_hash(): import subprocess return subprocess.check_output( ['git', 'rev-parse', '--short', 'HEAD']).decode("utf-8").strip("\n") @api_v2.route('/') @auto.doc(groups=["public"]) def version_2(): """Return API version """ return jsonify( name="kuas-api version 2.", version="2", server_revision=get_git_revision_short_hash(), endpoints="https://kuas.grd.idv.tw:14769/v2/" ) # Add v2 routes
from flask import jsonify from flask_apiblueprint import APIBlueprint from sample_api import User, Media api_v1 = APIBlueprint('api_v1', __name__, subdomain='', url_prefix='/api/v1') @api_v1.route('/user/<user_id>/') def username(user_id): username = User.query.get(user_id).username return jsonify(username=username) @api_v1.route('/users/list/') def users_list(): users = User.query.all() usernames = [{'username': user.username} for user in users] return jsonify(data=usernames) @api_v1.route('/media/<media_id>/') def media_info(media_id): kind = Media.query.get(media_id).kind return jsonify(data=dict(kind=kind))
import io import flask from PIL import Image from flask import abort, make_response from flask_api.decorators import set_renderers from flask_api.renderers import JSONRenderer from flask_apiblueprint import APIBlueprint from predicts import get_prediction_model from renderers import JSONAPIRenderer from utils import check_mimetype, WrongMimeTypeError api = APIBlueprint("api_v1", __name__) @api.route("/predict/<string:prediction_model>/", methods=["POST"]) @set_renderers(JSONAPIRenderer, JSONRenderer) def predict(prediction_model): predict_model = get_prediction_model(prediction_model) if predict_model: image = flask.request.files["image"] if flask.request.files.get("image"): try: # Check image extension (it should be JPEG or PNG) check_mimetype(flask.request.files.get("image")) except WrongMimeTypeError: return abort(400, "Unsupported file") image.seek(0) image = image.read() image = Image.open(io.BytesIO(image))
# -*- coding: utf-8 -*- from flask_apiblueprint import APIBlueprint from kuas_api.views.v2 import api_v2 # Create latest blueprint latest = APIBlueprint('latest', __name__, subdomain='', url_prefix='/latest', inherit_from=api_v2)