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
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 tenerconsumes: [multipart/form-data]
, y los campos del cuerpo se definen comoin: 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
- in: body
- application/json
En este código, se ha modificado la estructura de los parámetros para que el nombre del objeto contenedor sea
user
en lugar debody
, 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
ypassword_confirmation
:yaml ... parameters:
- in: body
2. Elimina las líneas de comentario (
):
yaml ... parameters:
- in: body
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