On Tue, Aug 25, 2020 at 8:11 AM Simon <simon.borde...@gmail.com> wrote:

> I find that flask's approach to this is quite pythonic. It's also
> relatively easy to use and explain.
>
> This is a good point, I think you distracted a bit earlier by saying it
would be familiar to flask users. That's true, but not the point. Rather,
we are going for, as you say, a pythonic, simple, easy to use and explain
API. And this one is inspired by flask, which is a good thing, as flask is
widely used and excepted, and has a reputation for being fairly easy to get
started with.

I myself am not familiar with flask, and with a quick glance, your
prototype made sense to me :-)

I think this might be a good addition to the stdlib, but it's still a good
idea to flesh out the API and documentation, and a package we can grab from
PyPi would be a good way to test it out. And we'd want that as a backport
anyway. Also, you can see if you get any uptake -- other than the "can't ue
PyPi" use case, do folks find this useful for simple REST APIs that don't
require templating, and ORMs, and web-based configuration, and sessions,
and all that stuff that the more complete frameworks provide.

So I encourage you to move forward with this and see where it goes.

-CHB






> With this approach, as demonstrated by the example I provided, any dev can
> spin up a server that serves an API in virtually no time, which is why, out
> of all the possible approaches (Having an App-like class, designing
> middlewares, a Resource object with get,post,put,delete methods etc), I
> personally find flask's is the most appropriate for quick prototyping.
>
> Furthermore, in the implementation I made of this request handler, I used
> nothing but built-in python types.
>
> Here are the implementations I thought of, both for the
> 'RESTRequestHandler' and the 'WebhookRequestHandler'.
>
> RESTRequestHandler
> <https://gist.github.com/Dogeek/dedcac029b8ad3e505acff7ecf3a25ed>
> WebhookRequestHandler
> <https://gist.github.com/Dogeek/82b01a10c45ffccd3c8206fa67b5f198>
>
> I also can't help but think that this would be a great addition for devs
> who cannot for one reason or another, use PyPI (for instance, restrictions
> imposed by the IT staff at their jobs)
>
> I can't help the feeling that this is much more appropriate for PyPI than
> for the stdlib. There are just too many different ways to do it. (For
> example, what if the user isn't familiar with flask?)
>
> On Mon, Aug 24, 2020 at 1:45 PM Simon <simon.borde...@gmail.com> wrote:
>
> > > Fair enough. I guess the real question is, how much advantage is
> > > RESTRequestHandler over directly subclassing BaseHTTPRequestHandler?
> > > Maybe it'd be worth it just to simplify that case.
> > >
> > > ChrisA
> >
> > Well, maybe an example would be more telling. Below is a basic usage of
> > the handler I wrote :
> >
> >     @RESTRequestHandler.route('/get/<obj_id:int>', methods=['GET'])
> >     def get_obj(request, obj_id):
> >         objs = [
> >             {'bar': 'baz'},
> >             {'lorem': 'ipsum'},
> >         ]
> >         if obj_id > len(objs):
> >             raise HTTPStatusException(HTTPStatus.NOT_FOUND)
> >         return HTTPStatus.OK, objs[obj_id]
> >     @RESTRequestHandler.errorhandler('*')
> >     def handle_errors(r, exc):
> >         return exc.status_code, {'code': exc.status_code, 'message'
> > : exc.message}
> >     with HTTPServer(('localhost', 8080), RESTRequestHandler) as httpd:
> >         httpd.serve_forever()
> > This example demonstrates how such a handler would be used, using a
> syntax
> > that
> > flask users should be pretty familiar with. The handler integrates both a
> > route and
> > an errorhandler decorator, which can be used to add new routes to the API
> > that's being
> > built. It's not something that's in the standard library either. By the
> > way, RESTRequestHandler
> > subclasses SimpleHTTPRequestHandler.
> >
> > Overall the advantage is pretty clear, it provides a much simpler API for
> > devs
> > who wish to spin up an API, which would be the ultimate goal of this PEP.
> > Not to mention,
> > the handler I wrote is 184 lines of code, having to reimplement for every
> > API is cumbersome.
>
> _______________________________________________
> Python-ideas mailing list -- python-ideas@python.org
> To unsubscribe send an email to python-ideas-le...@python.org
> https://mail.python.org/mailman3/lists/python-ideas.python.org/
> Message archived at
> https://mail.python.org/archives/list/python-ideas@python.org/message/O53NXLP4BBTRVOZLVRJCM772AYLGIDLH/
> Code of Conduct: http://python.org/psf/codeofconduct/
>


-- 
Christopher Barker, PhD

Python Language Consulting
  - Teaching
  - Scientific Software Development
  - Desktop GUI and Web Development
  - wxPython, numpy, scipy, Cython
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/WXOYSSGCTKT7IVAQ6HP2CW7RM2N6C2BY/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to