I'm working on a REST API for which I implement common functionality using
decorators that I can add to the request methods, and part of that common
functionality is setting headers. It's a work in progress but this is the
general idea:
def serializecontent(method):
@wraps(method)
def wrapper(self, *args, **keys):
# Retrieve the data from the wrapped method
content = method(self, *args, **keys)
if not content is None:
# Serialize the data as requested
serializeddata = self.serialize(content)
# Set the content headers
# This may not be the best place to do this, particularly the
> content length.
self.setcontentlengthheader(serializeddata)
self.setcontenttypeheader()
return serializeddata
else:
return None
> return wrapper
class UserCollection(Collection):
>
@handleexceptions
> @requestmethod
> @setetag()
> @serializecontent
> @setlastmodified(determinelastmodified=_lastmodified)
> @conditionalresponse(determinelastmodified=_lastmodified)
> def GET(self):
> return Collection.GET(self)
# ...
Is that more or less hacky? :P It needs a lot of tidying up as it is at the
moment, and I'm probably sidestepping a lot of great functionality that
web.py provides, but the thing I was trying to avoid like yourself was
recreating the same standard functionality in each request method.
Regards,
Kevin
On Wed, Oct 24, 2012 at 9:48 PM, Cameron <[email protected]> wrote:
> I'm curious to know what solution everyone has come up with for setting
> the Content-Length headers for larger web applications. I'd rather not set
> it for every single app / subapp response so I came up with this but it
> seems pretty hacky. Thoughts?
>
> def headersProcessor(h):
> """ Set the content length and and content type of each request.
> h : the handler for the requested url
> return the response from the handler """
> res = h()
> web.header('Content-type', 'text/html; charset=utf-8')
> web.header('Content-Length', len(res))
> return res
>
> app.add_processor(headersProcessor)
>
> --
> You received this message because you are subscribed to the Google Groups
> "web.py" group.
> To view this discussion on the web visit
> https://groups.google.com/d/msg/webpy/-/brb4RSGGqZMJ.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> For more options, visit this group at
> http://groups.google.com/group/webpy?hl=en.
>
--
You received this message because you are subscribed to the Google Groups
"web.py" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/webpy?hl=en.