diff options
| author | Sébastien Piquemal | 2012-02-23 09:01:33 +0200 |
|---|---|---|
| committer | Sébastien Piquemal | 2012-02-23 09:01:33 +0200 |
| commit | 9da1ae81dc9a056db94ea07f35478ed003fea598 (patch) | |
| tree | 2557ce0fe8be2b7febb184c3bb3da7b5289fbbe1 /docs/howto/reverse.rst | |
| parent | 242327d339fe1193a45c64cb20a2ba4c56044c3b (diff) | |
| parent | 5fd4c639d7c64572dd07dc31dcd627bed9469b05 (diff) | |
| download | django-rest-framework-9da1ae81dc9a056db94ea07f35478ed003fea598.tar.bz2 | |
merged + fixed broken test
Diffstat (limited to 'docs/howto/reverse.rst')
| -rw-r--r-- | docs/howto/reverse.rst | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/docs/howto/reverse.rst b/docs/howto/reverse.rst new file mode 100644 index 00000000..73b8fa4d --- /dev/null +++ b/docs/howto/reverse.rst @@ -0,0 +1,39 @@ +Returning URIs from your Web APIs +================================= + +As a rule, it's probably better practice to return absolute URIs from you web APIs, e.g. "http://example.com/foobar", rather than returning relative URIs, e.g. "/foobar". + +The advantages of doing so are: + +* It's more explicit. +* It leaves less work for your API clients. +* There's no ambiguity about the meaning of the string when it's found in representations such as JSON that do not have a native URI type. +* It allows us to easily do things like markup HTML representations with hyperlinks. + +Django REST framework provides two utility functions to make it simpler to return absolute URIs from your Web API. + +There's no requirement for you to use them, but if you do then the self-describing API will be able to automatically hyperlink its output for you, which makes browsing the API much easier. + +reverse(viewname, request, ...) +------------------------------- + +The :py:func:`~reverse.reverse` function has the same behavior as `django.core.urlresolvers.reverse`_, except that it takes a request object and returns a fully qualified URL, using the request to determine the host and port:: + + from djangorestframework.reverse import reverse + from djangorestframework.views import View + + class MyView(View): + def get(self, request): + context = { + 'url': reverse('year-summary', request, args=[1945]) + } + + return Response(context) + +reverse_lazy(viewname, request, ...) +------------------------------------ + +The :py:func:`~reverse.reverse_lazy` function has the same behavior as `django.core.urlresolvers.reverse_lazy`_, except that it takes a request object and returns a fully qualified URL, using the request to determine the host and port. + +.. _django.core.urlresolvers.reverse: https://docs.djangoproject.com/en/dev/topics/http/urls/#reverse +.. _django.core.urlresolvers.reverse_lazy: https://docs.djangoproject.com/en/dev/topics/http/urls/#reverse-lazy |
