Saltar al contenido

Cómo mostrar opciones de parámetros de consulta en Django REST Framework – Swagger

Nuestro grupo de especialistas pasados varios días de trabajo y recopilar de datos, hallamos la solución, queremos que te sea de utilidad para tu trabajo.

Solución:

nueva arrogancia

from rest_framework.filters import BaseFilterBackend
import coreapi

class SimpleFilterBackend(BaseFilterBackend):
    def get_schema_fields(self, view):
        return [coreapi.Field(
            name='query',
            location='query',
            required=False,
            type='string'
        )]

class MyViewSet(viewsets.ViewSet):
    filter_backends = (SimpleFilterBackend,)

    def list(self, request, *args, **kwargs):
        # print(request.GET.get('query'))  # Use the query param in your view
        return Response('hello': 'world', status.HTTP_200_OK)

De acuerdo, para aquellos que tropiezan con esta pregunta, lo he resuelto. Es bastante tonto, y me siento un poco estúpido por no saberlo, pero en mi defensa, no estaba claramente documentado. La información no se encontró en la documentación de DRF ni dentro del repositorio Django REST Swagger. En su lugar, se encontró en django-rest-framework-docs, que es de lo que se basa Django REST Swagger.

Para especificar su parámetro de consulta para que aparezca en su SwaggerUI como un campo de formulario, simplemente comente así:

def list(self):
    """
    param1 -- A first parameter
    param2 -- A second parameter
    """ 
    ...

Y swagger analizará sus comentarios y colocará una entrada de formulario para param1 y param2. Que sigue -- son las descripciones de los parámetros.

Encontré el resto de los documentos de Swagger Framework. para que podamos escribir el tipo de parámetro (entero, carácter), respuesta, etc.

el triple --- es necesario.

@api_view(["POST"])
def foo_view(request):
    """
    Your docs
    ---
    # YAML (must be separated by `---`)

    type:
      name:
        required: true
        type: string
      url:
        required: false
        type: url
      created_at:
        required: true
        type: string
        format: date-time

    serializer: .serializers.FooSerializer
    omit_serializer: false

    parameters_strategy: merge
    omit_parameters:
        - path
    parameters:
        - name: name
          description: Foobar long description goes here
          required: true
          type: string
          paramType: form
        - name: other_foo
          paramType: query
        - name: other_bar
          paramType: query
        - name: avatar
          type: file

    responseMessages:
        - code: 401
          message: Not authenticated
    """

¿Qué tal la situación en la que usamos la clase mixins como ModelViewSets. ¿Necesitamos definir el list función solo para agregar los documentos? — No

Podemos hacer así:

class ArticleViewSet(viewsets.ModelViewSet):

    """
    Articles.
    ---
    list:    #<--- here!!
        parameters:
            - name: name
              description: article title
    get_price:
        omit_serializer: true

    """

    @list_route(methods=['get'])
    def get_price(self, request):
        pass

Si sostienes algún recelo y disposición de arreglar nuestro tutorial eres capaz de dejar un exégesis y con mucho placer lo ojearemos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *