Returning responses

There are a number of ways in which you can return a response from a REST service

String

You can simply return a plain text String. CorePost will return the appropriate HTTP code for you:

@route("/",Http.GET)
def root(self,request,**kwargs):
    return "Hello"

Dictionaries, lists or classes

You can return straight dictionaries:

@route("/",Http.GET)
def root(self,request,**kwargs):
    return {"test":"test"}

or lists:

@route("/",Http.GET)
def root(self,request,**kwargs):
    return [{"test":"test"},{"test":"test2"}]

or classes:

@route("/",Http.GET)
def root(self,request,**kwargs):
    return SomeClass()

CorePost will serialize each of them to the appropriate content type (JSON,YAML or XML), depending on what the caller can accept.

Response objects

This option gives you the most control, as you can explicitly specify the response content, headers and HTTP code. You need to return an instance of corepost.Response object:

class Response:
    """
    Custom response object, can be returned instead of raw string response
    """
    def __init__(self,code=200,entity=None,headers={}):
        pass

Example:

@route("/",Http.POST)
def post(self,request,customerId,addressId,streetNumber,streetName,stateCode,countryCode):
    c = DB.getCustomer(customerId)
    address = CustomerAddress(streetNumber,streetName,stateCode,countryCode)
    c.addresses[addressId] = address
    return Response(201)

Table Of Contents

Previous topic

HTTP codes

Next topic

Content types

This Page