swagger:parameters siguen apareciendo como parámetros de cadena de consulta
Tengo el siguiente controlador:
// Create database
// swagger:route POST /databases createDatabase
//
// Crear base de datos
//
// Seguridad:
// oauth2:
//
// Respuestas:
// 202: Database
// 401: Error
// ...
func (h Handler) Create(c *gin.Context) {
var request CreateDatabaseRequest
if err := handler.DataBinder(c, &request); err != nil {
_ = c.Error(err)
return
}
...
}
Y la siguiente estructura que envío a través del cuerpo de la solicitud:
// CreateDatabaseRequest
// swagger:parameters createDatabase
// in: body
// required: true
//
// Parámetro de entrada para crear una base de datos
type CreateDatabaseRequest struct {
Name string `json:"name" binding:"required"`
GroupId uint `json:"groupId" binding:"required"`
}
Pero cuando genero mis documentos, las propiedades de la estructura CreateDatabaseRequest se muestran como dos parámetros de consulta individuales.
Puedo solucionarlo creando una estructura ficticia adicional como se define a continuación:
// swagger:parameters createDatabase
type _ struct {
// Parámetro para crear una base de datos
// in: body
// required: true
Body database.CreateDatabaseRequest
}
Pero realmente no me gusta eso y preferiría simplemente documentar mi parámetro de solicitud en su lugar.
¿Alguna idea sobre cómo puedo documentar correctamente mi estructura para que aparezca como un parámetro de cuerpo de solicitud en lugar de una cadena de consulta?
davy.ai
Para documentar correctamente su estructura de modo que se muestre como un parámetro del cuerpo de la solicitud, debe agregar el campo
content
a su función controladora y especificar el tipo de contenido comoapplication/json
. Aquí está la función controladora actualizada:Tenga en cuenta que intercambiamos la posición de
swagger:parameters
y la estructura de solicitudCreateDatabaseRequest
para que los campos deCreateDatabaseRequest
se muestren como parámetros del cuerpo de la solicitud. También agregamos el campoexample
para mostrar valores de muestra para los camposName
yGroupId
.