Mango de paramillas fuertes en YAML

Estoy haciendo la documentación de API en el swagger y usando YAML. Este es mi código YAML

swagger: "2.0"  
info:
title: Sign_up Api
description: This Will alow user to Signup.
version: 1.0.0
host: e9ea53234b75.ngrok.io
basePath: /customer_app/api/v1
schemes:
    - https
paths:
     /sign_up:
       post:
         summary: Return User Credentials After signup.
         parameters:
           - in: body
             name: body
             required: true
             # type: string
             
             schema:
               type: object
               properties:
                 email:
                   type: string
                   example: [email protected]
                 password:
                   # type: string
                   example: test123
                 password_confirmation:
                   # type: integer
                   example: test123
                 name:
                   type: string
                   example: testabc
               
         description: User can be signup by providing the listed params & it will return a authentication token and other user params.
         produces:
           - application/json
           
     
         responses:
           200:
             description: User credentials.
               properties:
                 id:
                   type: string
                   example: 70020ed1-50fe-4c7e-afed
                 password:
                   # type: string
                   example: pasw123
                 password_confirmation:
                   # type: string
                   example: pasw123
                 name:
                   type: string
                   example: testabc
           422:
             description: The specified email is invalid (e.g. not following the syntax) or paswwords are not same or missing params.
           default:
             description: Unexpected error

y conseguir mis params en carriles por

   params.require(:user).permit(:email, :password , :password_confirmation, :uuid, :name)

de esta manera estoy enviando mis params del cartero

This

y conseguir esta respuesta

"[email protected]", "password"=>"moon123", "password_confirmation"=>"moon123", "name"=>"moon123"} permitted: false>, "format"=>:json, "controller"=>"customer_app/api/v1/registrations", "action"=>"create"} permitted: false>

pero usando el usuario[email] en YAML consiguió esto de una manera equivocada

"[email protected]", "user[password]"=>"test123", "user[password_confirmation]"=>"test123", "user[name]"=>"testabc", "format"=>:json, "controller"=>"customer_app/api/v1/registrations", "action"=>"create", "registration"=>{"user[email]"=>"[email protected]", "user[password]"=>"test123", "user[password_confirmation]"=>"test123", "user[name]"=>"testabc"}} permitted: false>

No sé cómo editar mi YAML para obtener la respuesta que recibí de Postman.

Pregunta hecha hace 3 años, 4 meses, 28 días - Por codeartisan


3 Respuestas:

  • Los cuerpos "form-data" de Postman son para solicitudes con Content-Type: multipart/form-data. En OpenAPI 2.0, tales solicitudes deben tener consumes: [multipart/form-data], y los campos del cuerpo se definen como in: formData parámetros.

    swagger: '2.0'
    ...
    
    paths:
      /sign_up:
        post:
          summary: Return User Credentials After signup.
          consumes:
            - multipart/form-data
          parameters:
            - in: formData
              name: user[email]
              type: string
              format: email
              x-example: [email protected]
            - in: formData
              name: user[password]
              type: string
              format: password
              x-example: test123
            - in: formData
              name: user[password_confirmation]
              type: string
              format: password
              x-example: test123
            - in: formData
              name: user[name]
              type: string
              x-example: testabc
    

    Respondida el Dec 18, 2020 a las 07:54 - por codesculptor3f6e

    Votos positivos: 0 | Votos negativos: 0

  • Para corregir la estructura de tu YAML y obtener la respuesta que necesitas, puedes modificar tu definición de parámetros en el archivo YAML de la siguiente manera:

    yaml
    swagger: "2.0"
    info:
      title: Sign_up Api
      description: This Will allow user to Signup.
      version: 1.0.0
    host: e9ea53234b75.ngrok.io
    basePath: /customer_app/api/v1
    schemes:
         
    • https
    paths: /sign_up: post: summary: Return User Credentials After signup. parameters:
    • in: body
    name: user required: true schema: type: object properties: email: type: string example: [email protected] password: type: string example: test123 password_confirmation: type: string example: test123 name: type: string example: testabc description: User can sign up by providing the listed params & it will return an authentication token and other user params. produces:
    • application/json
    responses: 200: description: User credentials. schema: type: object properties: id: type: string example: 70020ed1-50fe-4c7e-afed password: type: string example: pasw123 password_confirmation: type: string example: pasw123 name: type: string example: testabc 422: description: The specified email is invalid (e.g. not following the syntax) or passwords are not the same or missing params. default: description: Unexpected error

    En este código, se ha modificado la estructura de los parámetros para que el nombre del objeto contenedor sea user en lugar de body, para que coincida con la estructura que esperas en tu controlador de Rails. Ahora, cuando envíes tu solicitud desde Postman, deberías recibir una respuesta en el formato que esperas.

    Espero que esta corrección te haya sido útil. ¡Déjame saber si tienes alguna otra pregunta!

    Respondida el Dec 19, 2020 a las 07:57 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Para que el código YAML funcione correctamente y envíe los parámetros esperados, debes realizar los siguientes cambios:

    1. Modifica el tipo de datos de email, password y password_confirmation:

    yaml
    ...
    parameters:
         
    • in: body
    name: body required: true schema: type: object properties: email: type: string example: [email protected] password: type: string example: test123 password_confirmation: type: string example: test123 name: type: string example: testabc ...

    2. Elimina las líneas de comentario (

    ):

    yaml
    ...
    parameters:
         
    • in: body
    name: body required: true schema: type: object properties: email: type: string example: [email protected] password: type: string example: test123 password_confirmation: type: string example: test123 name: type: string example: testabc ...

    3. Ajusta los parámetros de respuesta:

    yaml
    ...
    responses:
      200:
        description: User credentials.
        schema:
          type: object
          properties:
            id:
              type: string
              example: 70020ed1-50fe-4c7e-afed
            email:
              type: string
              example: [email protected]
            password:
              type: string
              example: pasw123
            password_confirmation:
              type: string
              example: pasw123
            name:
              type: string
              example: testabc
    ...
    

    4. Ajusta el permit en el controlador:

    ruby
      params.require(:user).permit(:email, :password, :password_confirmation, :name)
    

    Explicación de los cambios:

    Al eliminar las líneas de comentario, estás definiendo correctamente los tipos de datos para los parámetros. Los nuevos parámetros de respuesta reflejan la respuesta que estás obteniendo en Postman. El permit modificado ahora coincide con los parámetros esperados de tu cuerpo de solicitud.

    Nota:*

    Asegúrate de que el formato JSON de la solicitud en Postman coincida con el esquema esperado definido en el archivo YAML. Si no coincide, es posible que recibas errores de formato.

    Respondida el Dec 19, 2020 a las 08:07 - por Gemini

    Votos positivos: 0 | Votos negativos: 0