Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

django-rest-swagger: How can I specify the parameter type in the docstring

I am using django-rest-framwork and django-rest-swagger.

The problem is that I'm fetching data directly from the body of the request:

def put(self, request, format=None):
    """                                                                                                                                                                                                
    This text is the description for this API                                                                                                                                                          
    username -- username                                                                                                                                                                               
    password -- password                                                                                                                                                                               
    """
    username = request.DATA['username']
    password = request.DATA['password']

but when I try the request from the swagger-ui I can't specify the "parameter type" (it's by default query and can't find a way to change it from the docstring)

I have managed to get around my problem by changing some line in the function build_query_params_from_docstring from the file "introspectors.py" but I was wondering if there is another way to do it.

like image 925
Alexis Avatar asked Nov 09 '14 19:11

Alexis


1 Answers

UPDATE: This answer only works for django-rest-swagger < 2, see the comment from @krd below.

The docs: http://django-rest-swagger.readthedocs.org/en/latest/yaml.html

If you want to put form-data:

def put(self, request, format=None):
    """
    This text is the description for this API.

    ---
    parameters:
    - name: username
      description: Foobar long description goes here
      required: true
      type: string
      paramType: form
    - name: password
      paramType: form
      required: true
      type: string
    """
    username = request.DATA['username']
    password = request.DATA['password']

For a JSON body you can do something like:

def put(...):
    """
    ...

    ---
    parameters:
    - name: body
      description: JSON object containing two strings: password and username.
      required: true
      paramType: body
      pytype: RequestSerializer
    """
    ...
like image 142
zvyn Avatar answered Sep 19 '22 03:09

zvyn