diff --git a/tapioca/rest_api.py b/tapioca/rest_api.py index ea8f04e..ac6bed9 100644 --- a/tapioca/rest_api.py +++ b/tapioca/rest_api.py @@ -140,9 +140,8 @@ def post(self, *args, **kwargs): def _callback(content=None, *args, **kwargs): self.set_status(201) self.set_cross_origin() - self.set_header( - 'Location', '{r.protocol}://{r.host}{r.path}/{id:d}'.format( - r=self.request, id=content['id'])) + if content: + self.respond_with(content) self.finish() self.create_model(_callback, *args, **kwargs) @@ -153,8 +152,6 @@ def put(self, key=None, *args, **kwargs): try: self.set_status(204) self.set_cross_origin() - self.set_header('Location', '{r.protocol}://{r.host}{r.path}' - .format(r=self.request)) self.update_model(key, self.finish_callback, *args, **kwargs) except ResourceDoesNotExist: raise tornado.web.HTTPError(404) diff --git a/tests/acceptance/test_rest_api.py b/tests/acceptance/test_rest_api.py index a741db2..432049b 100644 --- a/tests/acceptance/test_rest_api.py +++ b/tests/acceptance/test_rest_api.py @@ -59,6 +59,9 @@ def create_model(self, callback): model['id'] = max([int(x['id']) for x in FAKE_DATABASE]) + 1 FAKE_DATABASE.append(model) logging.debug('created {0!s}'.format(model)) + self.set_header('Location', + '{r.protocol}://{r.host}{r.path}/{id:d}'.format( + r=self.request, id=model['id'])) callback(model) def get_collection(self, callback): @@ -72,6 +75,9 @@ def update_model(self, cid, callback, *args): model['id'] = int(cid) logging.debug('updating {0!s} {1!s}'.format(str(cid), str(model))) FAKE_DATABASE[FAKE_DATABASE.index(self._find(int(cid)))] = model + url_to_instance = '{r.protocol}://{r.host}{r.path}'.format( + r=self.request) + self.set_header('Location', url_to_instance) callback() def delete_model(self, cid, callback): @@ -134,7 +140,6 @@ def test_post_to_create_a_new_resource(self): } response = self.post(self.get_url('/api'), dumps(a_new_item)) assert_response_code(response, 201) - assert 'Location' in response.headers def test_put_to_update_an_existing_resource(self): response = self.get('/api/1')