金字塔滑道
pyramid_skue的Python项目详细描述
pyramid_skue是用于在Pyramid框架之上构建rest api服务的库。
安装
需要棱锥体>;=1.5a2
使用pip安装:
pip install pyramid_skue
或者使用easy_install:
easy_install pyramid_skue
用法
在主项目包中创建apipython包。
用资源的防御填充api/resourses.py:
from pyramid_skue.rest.api import ResourceDescription from pyramid_skue.rest.api import HttpMethodDescription from pyramid_skue.rest.api import HttpParameterDescription from pyramid_skue.http import CommonResponse from pyramid_skue.rest.resources import DocumentResource from .response import MessageResourceJson class MessageResource(DocumentResource): """Represents resource for readin/creating messages.""" # Resource definition def describe_resource(self): """Self description. """ description = 'Author of the message' author_param = HttpParameterDescription( 'author', 'string', is_required=True, description=description) description = 'Title of the message' title_param = HttpParameterDescription( 'title', 'string', is_required=True, description=description) description = 'Title of the message (optional)' title_optional_param = HttpParameterDescription( 'title', 'string', is_required=False, description=description) description = 'Message body' body_param = HttpParameterDescription( 'body', 'string', is_required=True, description=description) description = "Get existing messages" get_method = HttpMethodDescription( 'GET', parameters=[title_optional_param], description=description) description = "Post message" post_method = HttpMethodDescription( 'POST', parameters=[author_param, title_param, body_param], description=description) description = "Create/Get messages" resource = ResourceDescription( 'MessageResource', url="/api/message", methods=[get_method, post_method], description=description) return resource def read_resource(self): """ Return messages. Can be filtered by title. Assuming that ``storage`` is some database you're using. """ title = self.payload.get('title') if title: messages = storage.filter(title).all() else: messages = storage.all() body = MessageResourceJson(messages) return CommonResponse.success(body) def create_resource(self): """Create message. ``storage`` is some hypothetical database. """ author = self.payload.get('author') title = self.payload.get('title') body = self.payload.get('body') message_id = storage.create_message(author=author, title=title, body=body) resource_uri = self.get_resoruce_uri(message_id) return CommonResponse.resource_created(resource_uri)
然后添加api/response.py:
from pyramid_skue.json.utils import ResourceJSONRepresentation class MessageResourceJson(ResourceJSONRepresentation): """Represents a JSON response for MessageResource.""" def __init__(self, messages): ResourceJSONRepresentation.__init__(self, 'MessageResource') self.objects = [] for message in messages: self.objects.append({ 'author': message.author, 'title': message.title, 'body': message.body})
现在在__init__.py:
中注册视图config.add_route('api-message', '/api/message') config.add_view('your_app.api.resources.MessageResource', route_name='api-message', renderer='string', permission='view', # whatever permission you like check_csrf=True)
最好在CSRF附件中保护您的视图,查看pyramid’s documentation
联系人
该项目由西里尔·潘申(Cyril Panshine)负责维护非常欢迎错误报告和拉取请求!
0.1.0条
初始版本