diff options
Diffstat (limited to 'docs/api-guide/parsers.md')
| -rw-r--r-- | docs/api-guide/parsers.md | 83 | 
1 files changed, 54 insertions, 29 deletions
| diff --git a/docs/api-guide/parsers.md b/docs/api-guide/parsers.md index 3d44fe56..c242f878 100644 --- a/docs/api-guide/parsers.md +++ b/docs/api-guide/parsers.md @@ -26,26 +26,26 @@ As an example, if you are sending `json` encoded data using jQuery with the [.aj  ## Setting the parsers -The default set of parsers may be set globally, using the `DEFAULT_PARSER_CLASSES` setting.  For example, the following settings would allow requests with `YAML` content. +The default set of parsers may be set globally, using the `DEFAULT_PARSER_CLASSES` setting. For example, the following settings would allow only requests with `JSON` content, instead of the default of JSON or form data.      REST_FRAMEWORK = {          'DEFAULT_PARSER_CLASSES': ( -            'rest_framework.parsers.YAMLParser', +            'rest_framework.parsers.JSONParser',          )      }  You can also set the parsers used for an individual view, or viewset,  using the `APIView` class based views. -	from rest_framework.parsers import YAMLParser -	from rest_framework.response import Response +    from rest_framework.parsers import JSONParser +    from rest_framework.response import Response      from rest_framework.views import APIView      class ExampleView(APIView):          """ -        A view that can accept POST requests with YAML content. +        A view that can accept POST requests with JSON content.          """ -        parser_classes = (YAMLParser,) +        parser_classes = (JSONParser,)          def post(self, request, format=None):              return Response({'received data': request.data}) @@ -53,10 +53,10 @@ using the `APIView` class based views.  Or, if you're using the `@api_view` decorator with function based views.      @api_view(['POST']) -    @parser_classes((YAMLParser,)) +    @parser_classes((JSONParser,))      def example_view(request, format=None):          """ -        A view that can accept POST requests with YAML content. +        A view that can accept POST requests with JSON content.          """          return Response({'received data': request.data}) @@ -70,26 +70,6 @@ Parses `JSON` request content.  **.media_type**: `application/json` -## YAMLParser - -Parses `YAML` request content. - -Requires the `pyyaml` package to be installed. - -**.media_type**: `application/yaml` - -## XMLParser - -Parses REST framework's default style of `XML` request content. - -Note that the `XML` markup language is typically used as the base language for more strictly defined domain-specific languages, such as `RSS`, `Atom`, and `XHTML`. - -If you are considering using `XML` for your API, you may want to consider implementing a custom renderer and parser for your specific requirements, and using an existing domain-specific media-type, or creating your own custom XML-based media-type. - -Requires the `defusedxml` package to be installed. - -**.media_type**: `application/xml` -  ## FormParser  Parses HTML form content.  `request.data` will be populated with a `QueryDict` of data. @@ -161,7 +141,7 @@ By default this will include the following keys: `view`, `request`, `args`, `kwa  ## Example -The following is an example plaintext parser that will populate the `request.data` property with a string representing the body of the request.  +The following is an example plaintext parser that will populate the `request.data` property with a string representing the body of the request.      class PlainTextParser(BaseParser):      """ @@ -182,6 +162,48 @@ The following is an example plaintext parser that will populate the `request.dat  The following third party packages are also available. +## YAML + +[REST framework YAML][rest-framework-yaml] provides [YAML][yaml] parsing and rendering support. It was previously included directly in the REST framework package, and is now instead supported as a third-party package. + +#### Installation & configuration + +Install using pip. + +    $ pip install djangorestframework-yaml + +Modify your REST framework settings. + +    REST_FRAMEWORK = { +        'DEFAULT_PARSER_CLASSES': ( +            'rest_framework_yaml.parsers.YAMLParser', +        ), +        'DEFAULT_RENDERER_CLASSES': ( +            'rest_framework_yaml.renderers.YAMLRenderer', +        ), +    } + +## XML + +[REST Framework XML][rest-framework-xml] provides a simple informal XML format. It was previously included directly in the REST framework package, and is now instead supported as a third-party package. + +#### Installation & configuration + +Install using pip. + +    $ pip install djangorestframework-xml + +Modify your REST framework settings. + +    REST_FRAMEWORK = { +        'DEFAULT_PARSER_CLASSES': ( +            'rest_framework_xml.parsers.XMLParser', +        ), +        'DEFAULT_RENDERER_CLASSES': ( +            'rest_framework_xml.renderers.XMLRenderer', +        ), +    } +  ## MessagePack  [MessagePack][messagepack] is a fast, efficient binary serialization format.  [Juan Riaza][juanriaza] maintains the [djangorestframework-msgpack][djangorestframework-msgpack] package which provides MessagePack renderer and parser support for REST framework. @@ -193,6 +215,9 @@ The following third party packages are also available.  [jquery-ajax]: http://api.jquery.com/jQuery.ajax/  [cite]: https://groups.google.com/d/topic/django-developers/dxI4qVzrBY4/discussion  [upload-handlers]: https://docs.djangoproject.com/en/dev/topics/http/file-uploads/#upload-handlers +[rest-framework-yaml]: http://jpadilla.github.io/django-rest-framework-yaml/ +[rest-framework-xml]: http://jpadilla.github.io/django-rest-framework-xml/ +[yaml]: http://www.yaml.org/  [messagepack]: https://github.com/juanriaza/django-rest-framework-msgpack  [juanriaza]: https://github.com/juanriaza  [vbabiy]: https://github.com/vbabiy | 
