当前位置: 首页>>代码示例>>Python>>正文


Python APIManager.create_api方法代码示例

本文整理汇总了Python中flask_restless.APIManager.create_api方法的典型用法代码示例。如果您正苦于以下问题:Python APIManager.create_api方法的具体用法?Python APIManager.create_api怎么用?Python APIManager.create_api使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在flask_restless.APIManager的用法示例。


在下文中一共展示了APIManager.create_api方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: TestFlaskSQLAlchemy

# 需要导入模块: from flask_restless import APIManager [as 别名]
# 或者: from flask_restless.APIManager import create_api [as 别名]
class TestFlaskSQLAlchemy(FlaskSQLAlchemyTestBase):
    """Tests for deleting resources defined as Flask-SQLAlchemy models instead
    of pure SQLAlchemy models.

    """

    def setUp(self):
        """Creates the Flask-SQLAlchemy database and models."""
        super(TestFlaskSQLAlchemy, self).setUp()

        class Person(self.db.Model):
            id = self.db.Column(self.db.Integer, primary_key=True)

        self.Person = Person
        self.db.create_all()
        self.manager = APIManager(self.flaskapp, flask_sqlalchemy_db=self.db)
        self.manager.create_api(self.Person, methods=['DELETE'])

    def test_delete(self):
        """Tests for deleting a resource."""
        person = self.Person(id=1)
        self.session.add(person)
        self.session.commit()
        response = self.app.delete('/api/person/1')
        assert response.status_code == 204
        assert self.Person.query.count() == 0
开发者ID:rezun,项目名称:flask-restless,代码行数:28,代码来源:test_deleting.py

示例2: test_multiple_managers_init_multiple_apps

# 需要导入模块: from flask_restless import APIManager [as 别名]
# 或者: from flask_restless.APIManager import create_api [as 别名]
    def test_multiple_managers_init_multiple_apps(self):
        """Tests for calling :meth:`~APIManager.init_app` on multiple
        :class:`~flask.Flask` applications after calling
        :meth:`~APIManager.create_api` on multiple instances of
        :class:`APIManager`.

        """
        manager1 = APIManager(session=self.session)
        manager2 = APIManager(session=self.session)

        # Create the Flask applications and the test clients.
        flaskapp1 = self.flaskapp
        flaskapp2 = Flask(__name__)
        testclient1 = self.app
        testclient2 = flaskapp2.test_client()
        force_content_type_jsonapi(testclient2)

        # First create the API, then initialize the Flask applications after.
        manager1.create_api(self.Person)
        manager2.create_api(self.Article)
        manager1.init_app(flaskapp1)
        manager2.init_app(flaskapp2)

        # Tests that only the first Flask application gets requests for
        # /api/person and only the second gets requests for /api/article.
        response = testclient1.get('/api/person')
        assert response.status_code == 200
        response = testclient1.get('/api/article')
        assert response.status_code == 404
        response = testclient2.get('/api/person')
        assert response.status_code == 404
        response = testclient2.get('/api/article')
        assert response.status_code == 200
开发者ID:AlmightyOatmeal,项目名称:flask-restless,代码行数:35,代码来源:test_manager.py

示例3: test_init_app

# 需要导入模块: from flask_restless import APIManager [as 别名]
# 或者: from flask_restless.APIManager import create_api [as 别名]
 def test_init_app(self):
     self.db.create_all()
     manager = APIManager(flask_sqlalchemy_db=self.db)
     manager.create_api(self.Person)
     manager.init_app(self.flaskapp)
     response = self.app.get('/api/person')
     assert response.status_code == 200
开发者ID:AlmightyOatmeal,项目名称:flask-restless,代码行数:9,代码来源:test_manager.py

示例4: test_constructor_app

# 需要导入模块: from flask_restless import APIManager [as 别名]
# 或者: from flask_restless.APIManager import create_api [as 别名]
    def test_constructor_app(self):
        """Tests for providing a :class:`~flask.Flask` application in
        the constructor.

        """
        manager = APIManager(app=self.flaskapp, session=self.session)
        manager.create_api(self.Person)
        response = self.app.get('/api/person')
        assert response.status_code == 200
开发者ID:AlmightyOatmeal,项目名称:flask-restless,代码行数:11,代码来源:test_manager.py

示例5: test_single_manager_init_single_app

# 需要导入模块: from flask_restless import APIManager [as 别名]
# 或者: from flask_restless.APIManager import create_api [as 别名]
    def test_single_manager_init_single_app(self):
        """Tests for calling :meth:`~APIManager.init_app` with a single
        :class:`~flask.Flask` application after calling
        :meth:`~APIManager.create_api`.

        """
        manager = APIManager(session=self.session)
        manager.create_api(self.Person)
        manager.init_app(self.flaskapp)
        response = self.app.get('/api/person')
        assert response.status_code == 200
开发者ID:AlmightyOatmeal,项目名称:flask-restless,代码行数:13,代码来源:test_manager.py

示例6: test_schema_app_in_constructor

# 需要导入模块: from flask_restless import APIManager [as 别名]
# 或者: from flask_restless.APIManager import create_api [as 别名]
 def test_schema_app_in_constructor(self):
     manager = APIManager(self.flaskapp, session=self.session)
     manager.create_api(self.Article)
     manager.create_api(self.Person)
     response = self.app.get('/api')
     self.assertEqual(response.status_code, 200)
     document = loads(response.data)
     info = document['meta']['modelinfo']
     self.assertEqual(sorted(info), ['article', 'person'])
     self.assertTrue(info['article']['url'].endswith('/api/article'))
     self.assertTrue(info['person']['url'].endswith('/api/person'))
开发者ID:jfinkels,项目名称:flask-restless,代码行数:13,代码来源:test_manager.py

示例7: test_empty_url_prefix

# 需要导入模块: from flask_restless import APIManager [as 别名]
# 或者: from flask_restless.APIManager import create_api [as 别名]
    def test_empty_url_prefix(self):
        """Tests for specifying an empty string as URL prefix at the manager
        level but not when creating an API.

        """
        manager = APIManager(self.flaskapp, session=self.session,
                             url_prefix='')
        manager.create_api(self.Person)
        response = self.app.get('/person')
        assert response.status_code == 200
        response = self.app.get('/api/person')
        assert response.status_code == 404
开发者ID:AlmightyOatmeal,项目名称:flask-restless,代码行数:14,代码来源:test_manager.py

示例8: init_app

# 需要导入模块: from flask_restless import APIManager [as 别名]
# 或者: from flask_restless.APIManager import create_api [as 别名]
def init_app(app):
    manager = APIManager(app, flask_sqlalchemy_db=db, url_prefix='/models')
    manager.create_api(User,
                       preprocessors=admin_only_preprocessors,
                       url_prefix='',
                       methods=all_methods,
                       max_page_size=100,
                       exclude=('password',))
    manager.create_api(Role,
                       preprocessors=admin_only_preprocessors,
                       url_prefix='',
                       methods=all_methods,
                       max_page_size=100)
    app.logger.addFilter(ProcessingExceptionFilter())
开发者ID:derek-miller,项目名称:inspinia,代码行数:16,代码来源:api_manager.py

示例9: test_create_api_before_db_create_all

# 需要导入模块: from flask_restless import APIManager [as 别名]
# 或者: from flask_restless.APIManager import create_api [as 别名]
    def test_create_api_before_db_create_all(self):
        """Tests that we can create APIs before
        :meth:`flask_sqlalchemy.SQLAlchemy.create_all` is called.

        """
        manager = APIManager(self.flaskapp, flask_sqlalchemy_db=self.db)
        manager.create_api(self.Person)
        self.db.create_all()
        person = self.Person(id=1)
        self.db.session.add(person)
        self.db.session.commit()
        response = self.app.get('/api/person/1')
        assert response.status_code == 200
        document = loads(response.data)
        person = document['data']
        assert '1' == person['id']
开发者ID:AlmightyOatmeal,项目名称:flask-restless,代码行数:18,代码来源:test_manager.py

示例10: test_override_url_prefix

# 需要导入模块: from flask_restless import APIManager [as 别名]
# 或者: from flask_restless.APIManager import create_api [as 别名]
    def test_override_url_prefix(self):
        """Tests that a call to :meth:`APIManager.create_api` can
        override the URL prefix provided in the constructor to the
        manager class, if the new URL starts with a slash.

        """
        manager = APIManager(self.flaskapp, session=self.session,
                             url_prefix='/foo')
        manager.create_api(self.Person, url_prefix='/bar')
        manager.create_api(self.Article, url_prefix='')
        response = self.app.get('/bar/person')
        assert response.status_code == 200
        response = self.app.get('/article')
        assert response.status_code == 200
        response = self.app.get('/foo/person')
        assert response.status_code == 404
        response = self.app.get('/foo/article')
        assert response.status_code == 404
开发者ID:AlmightyOatmeal,项目名称:flask-restless,代码行数:20,代码来源:test_manager.py

示例11: TestFlaskSQLAlchemy

# 需要导入模块: from flask_restless import APIManager [as 别名]
# 或者: from flask_restless.APIManager import create_api [as 别名]
class TestFlaskSQLAlchemy(FlaskSQLAlchemyTestBase):
    """Tests for updating resources defined as Flask-SQLAlchemy models instead
    of pure SQLAlchemy models.

    """

    def setUp(self):
        """Creates the Flask-SQLAlchemy database and models."""
        super(TestFlaskSQLAlchemy, self).setUp()
        # HACK During testing, we don't want the session to expire, so that we
        # can access attributes of model instances *after* a request has been
        # made (that is, after Flask-Restless does its work and commits the
        # session).
        session_options = dict(expire_on_commit=False)
        # Overwrite the `db` and `session` attributes from the superclass.
        self.db = SQLAlchemy(self.flaskapp, session_options=session_options)
        self.session = self.db.session

        class Person(self.db.Model):
            id = self.db.Column(self.db.Integer, primary_key=True)
            name = self.db.Column(self.db.Unicode)

        self.Person = Person
        self.db.create_all()
        self.manager = APIManager(self.flaskapp, flask_sqlalchemy_db=self.db)
        self.manager.create_api(self.Person, methods=['PATCH'])

    def test_create(self):
        """Tests for creating a resource."""
        person = self.Person(id=1, name=u'foo')
        self.session.add(person)
        self.session.commit()
        data = {
            'data': {
                'id': '1',
                'type': 'person',
                'attributes': {
                    'name': u'bar'
                }
            }
        }
        response = self.app.patch('/api/person/1', data=dumps(data))
        assert response.status_code == 204
        assert person.name == 'bar'
开发者ID:AlmightyOatmeal,项目名称:flask-restless,代码行数:46,代码来源:test_updating.py

示例12: test_single_manager_init_multiple_apps

# 需要导入模块: from flask_restless import APIManager [as 别名]
# 或者: from flask_restless.APIManager import create_api [as 别名]
    def test_single_manager_init_multiple_apps(self):
        """Tests for calling :meth:`~APIManager.init_app` on multiple
        :class:`~flask.Flask` applications after calling
        :meth:`~APIManager.create_api`.

        """
        manager = APIManager(session=self.session)
        flaskapp1 = self.flaskapp
        flaskapp2 = Flask(__name__)
        testclient1 = self.app
        testclient2 = flaskapp2.test_client()
        force_content_type_jsonapi(testclient2)
        manager.create_api(self.Person)
        manager.init_app(flaskapp1)
        manager.init_app(flaskapp2)
        response = testclient1.get('/api/person')
        assert response.status_code == 200
        response = testclient2.get('/api/person')
        assert response.status_code == 200
开发者ID:AlmightyOatmeal,项目名称:flask-restless,代码行数:21,代码来源:test_manager.py

示例13: test_multiple_managers_init_single_app

# 需要导入模块: from flask_restless import APIManager [as 别名]
# 或者: from flask_restless.APIManager import create_api [as 别名]
    def test_multiple_managers_init_single_app(self):
        """Tests for calling :meth:`~APIManager.init_app` on a single
        :class:`~flask.Flask` application after calling
        :meth:`~APIManager.create_api` on multiple instances of
        :class:`APIManager`.

        """
        manager1 = APIManager(session=self.session)
        manager2 = APIManager(session=self.session)

        # First create the API, then initialize the Flask applications after.
        manager1.create_api(self.Person)
        manager2.create_api(self.Article)
        manager1.init_app(self.flaskapp)
        manager2.init_app(self.flaskapp)

        # Tests that both endpoints are accessible on the Flask application.
        response = self.app.get('/api/person')
        assert response.status_code == 200
        response = self.app.get('/api/article')
        assert response.status_code == 200
开发者ID:AlmightyOatmeal,项目名称:flask-restless,代码行数:23,代码来源:test_manager.py

示例14: test_universal_preprocessor

# 需要导入模块: from flask_restless import APIManager [as 别名]
# 或者: from flask_restless.APIManager import create_api [as 别名]
    def test_universal_preprocessor(self):
        """Tests universal preprocessor and postprocessor applied to all
        methods created with the API manager.

        """
        class Counter:
            """An object that increments a counter on each invocation."""

            def __init__(self):
                self._counter = 0

            def __call__(self, *args, **kw):
                self._counter += 1

            def __eq__(self, other):
                if isinstance(other, Counter):
                    return self._counter == other._counter
                if isinstance(other, int):
                    return self._counter == other
                return False

        increment1 = Counter()
        increment2 = Counter()

        preprocessors = dict(GET_COLLECTION=[increment1])
        postprocessors = dict(GET_COLLECTION=[increment2])
        manager = APIManager(self.flaskapp, session=self.session,
                             preprocessors=preprocessors,
                             postprocessors=postprocessors)
        manager.create_api(self.Person)
        manager.create_api(self.Article)
        # After each request, regardless of API endpoint, both counters should
        # be incremented.
        self.app.get('/api/person')
        self.app.get('/api/article')
        self.app.get('/api/person')
        assert increment1 == increment2 == 3
开发者ID:AlmightyOatmeal,项目名称:flask-restless,代码行数:39,代码来源:test_manager.py

示例15: len

# 需要导入模块: from flask_restless import APIManager [as 别名]
# 或者: from flask_restless.APIManager import create_api [as 别名]
        username, password = form.username.data, form.password.data
        matches = User.query.filter_by(username=username,
                                       password=password).all()
        if len(matches) > 0:
            login_user(matches[0])
            return redirect(url_for('index'))
        flash('Username and password pair not found')
    return render_template('login.html', form=form)


# Step 8: create the API for User with the authentication guard.
def auth_func(**kw):
    if not current_user.is_authenticated():
        raise ProcessingException(description='Not Authorized', code=401)


api_manager.create_api(User, preprocessors=dict(GET_SINGLE=[auth_func],
                                                GET_MANY=[auth_func]))

# Step 9: configure and run the application
app.run()

# Step 10: visit http://localhost:5000/api/user in a Web browser. You will
# receive a "Not Authorized" response.
#
# Step 11: visit http://localhost:5000/login and enter username "example" and
# password "example". You will then be logged in.
#
# Step 12: visit http://localhost:5000/api/user again. This time you will get a
# response showing the objects in the User table of the database.
开发者ID:AlmightyOatmeal,项目名称:flask-restless,代码行数:32,代码来源:__main__.py


注:本文中的flask_restless.APIManager.create_api方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。