2

I made api server with flask-restplus.

While working with it, I noticed that it maybe have to versioning for scaling up.

So refer the docs, I found Namespace and Blueprint is usuable.

First, file structure like this.

/app
  - /main
    - __init__.py
    - /controller
      - /v1/
        - article_controller.py
  - __init__.py

[/main/v1/__init__.py]

from flask_restplus import Namespace, Api
from flask import Blueprint

from .article_controller import api as article_ns


blueprint = Blueprint('api', __name__)

api = Api(blueprint,
          title='Appeal API',
          version='1.0',
          description='Appeal API',
          )

api.add_namespace(article_ns, path='/articles')

I import article_controller.py and add it via add_namespace().

[/main/__init__.py]

from flask_restplus import Api
from flask import Blueprint

from app.main.controller.v1 import api as api_v1


blueprint = Blueprint('api', __name__)

api = Api(blueprint,
          title='Appeal API v1',
          version='1.0',
          description='Appeal API v1',
          #   prefix='/api'
          )

# Version1
api.add_namespace(api_v1, path='/v1/')

Import v1 and add it to namespace.

But when I access to /v1/articles, Not found errors has occured.

I can't catch where is the wrong code.

Any solution here?

Thanks.

Hide
  • 3,199
  • 7
  • 41
  • 83

1 Answers1

-1

Where did you create your flask app?

in your app (the root of your project), you should have something like

app.py

that's where you define your flask app and register blueprints in it

like...

from flask import Flask
from main import blueprint as api1

app = Flask(__name__)
app.register_blueprint(api1)
app.run(debug=True)

look at this example in docs