Python microservice framework
Project homepage: https://github.com/palankai/pyrs-resource
Issue tracking: https://github.com/palankai/pyrs-resource/issues
What is this package for
In the python world there are many RESTFul framework. Some of them based on Django others are based on Flask. I’ve tried some but I had the feeling, I want to learn one, the use with Django or Flask or even Odoo. And I don’t mention sometimes I found them not flexible enough. So, I’ve decided write my own independent framework what anybody can use in at least the mentioned 3 different worlds.
Nutshell (notice that, it would be the achivement)
from pyrs import resource from pyrs.resource import GET class UserResouce: @GET(response=ArrayOfUserSchema) def get_users(self): return User.objects.all() @PUT(path='/<int:user_id>', response=UserSchema, request=UserSchema) def update_user(self, user_id, body): user = get_object_or_404(User, pk=user_id) user.name = body['name'] user.email = body['email'] user.save() return user app = resource.Application() app.add('/user', UserResouce)
In this example I’ve shown Django (like) example. The schema is based on pyrs.schema. Even if I tend to use that framework, you would be able to use any other.
- Using simple classes or even functions (no inheritance)
- Wrapped error handling, errors can be serialised
- Extensible API
- Works with python 2.7, 3.3, 3.4 (tested against these versions)
- Hooks for extending the dispatching process
$ pip install pyrs-resource
requirements.txt for details, but mainly depends on Werkzeug.
I’m using that project routing capabilities. Also depends on
I mentioned in nutshell section.
This code right now really in beta state. I plan to release soon as possible a completely working code, but right now it’s just shaping.
This work is part of pyrs framework. The complete framework follow the same intention to implement flexible solution.
I really welcome any comments! I would be happy if you fork my code or create pull requests. I’ve already really strong opinions what I want to achieve and how, though any help would be welcomed.
Feel free drop a message to me!