def register_api(view: MethodView, endpoint: str, url: str, pk: str = 'id', pk_type: str = 'int'): """Add url rules for rest-api endpoint Args: view: view with get/post/put/delete methods endpoint: name of view url: endpoint url pk: primary key name pk_type: primary key type """ view_func = view.as_view(endpoint) bp.add_url_rule(url, defaults={pk: None}, view_func=view_func, methods=[ 'GET', ]) bp.add_url_rule(url, view_func=view_func, methods=[ 'POST', ]) bp.add_url_rule(f'{url}<{pk_type}:{pk}>', view_func=view_func, methods=['GET', 'PUT', 'DELETE'])
def test_get_view_return(self): """ Test return value of _get_view method. """ view = self.flask_engine._get_view(MethodView) self.assertTrue(callable(view)) self.assertEqual(view.view_class, MethodView.as_view(MethodView.__name__).view_class)
def base_rule(bp: object, api: MethodView): """Configure default routing for all endpoints.""" name = api.model.__tablename__ view = api.as_view(f"{name}_api") bp.add_url_rule(f'/{name}/', defaults={'id': None}, methods=['GET'], view_func=view) bp.add_url_rule(f'/{name}', methods=['POST'], view_func=view) bp.add_url_rule(f'/{name}/<int:id>', methods=['GET', 'PUT', 'DELETE'], view_func=view)
def add_url_rule(self, rule: str, view: MethodView): self.__app.add_url_rule(rule, view_func=view.as_view(view.__qualname__))