Cómo cargar archivos usando Swagger
Prólogo
Con la popularidad del modelo de desarrollo de separación de front-end y back-end, es más probable que el personal de back-end escriba interfaces API del lado del servidor. Llamar a una interfaz para implementar la carga de archivos es una función común. También requiere una interfaz para seleccionar la carga de archivos. Puede escribir una interfaz de usuario para la carga y puede usar Postman y curl para simular solicitudes de carga. El método anterior es algo problemático. Swagger es una herramienta de depuración y documentación de API. Si puede proporcionar una interfaz de carga de archivos (no proporcionada de forma predeterminada), será más conveniente para las solicitudes de carga de archivos. Este artículo presentará cómo usar Swagger para cargar archivos.
Pasos
1. Instalar Swagger
Instalar el paquete Swashbuckle.AspNetCore
2. Configurar el middleware Swagger
Agregar Startup.ConfigureServices:
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", nueva información { Título = " Mi API", Versión = "v1" });
});
Agregar Startup.Configure:
app.UseSwagger(); p>
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "Mi API V1" );
});
3. API de escritura
// API/valores POST
[HttpPost]
Publicación vacía pública (archivo IFormFile)
{
//TODO:Guardar archivo...
}
/ / PUT api /values/5
[HttpPut("{id}")]
public void Put(int id, archivo IFormFile)
{
//TODO:Guardar archivo...
}
4. Escribir SwaggerFileUploadFilter
clase pública SwaggerFileUploadFilter: IOperationFilter
{
public void Apply(Operación operación, contexto OperationFilterContext)
{
if (!context.ApiDescription.HttpMethod.Equals("POST", StringComparison. OrdinalIgnoreCase) &&
!context.ApiDescription.HttpMethod.Equals("PUT", StringComparison.OrdinalIgnoreCase))
{
return; p>
}
var fileParameters = context.ApiDescription.ActionDescriptor.Parameters.Where(n => n.ParameterType == typeof(IFormFile)).ToList();
if ( fileParameters.Count < 0)
{
return;
}
operación.Consumes.Add("multipart/ form-data ");
foreach (var fileParameter en fileParameters)
{
var parámetro = operación.Pa
ramers.Single(n => n.Name == fileParameter.Name);
operación.Parameters.Remove(parámetro);
operación.Parameters.Add(new NonBodyParameter p> p>
{
Nombre = parámetro.Nombre,
In = "formData",
Descripción = parámetro.Descripción,
Requerido = parámetro.Requerido,
Tipo = "archivo"
});
}
} p>
}
5. Registrar SwaggerFileUploadFilter
c.OperationFilter
6. p>Método POST:
Método PUT:
Análisis de principios
La clave para usar Swagger para cargar archivos es SwaggerFileUploadFilter, que hereda de IOperationFilter de Swashbuckle, es decir , solo funciona para Swagger, no afectará a otros módulos.
Echemos un vistazo a la lógica del método Apply en SwaggerFileUploadFilter:
1. Determine si el método de solicitud es POST o PUT. Si se trata de otros métodos de solicitud, es básicamente. Imposible cargar un archivo.
2. Busque los parámetros de tipo IFormFile en el método.
3. Establezca Consume en "multipart/form-data".
4. Reemplace In en la descripción del parámetro de tipo IFormFile con formData y Type con File.
Dirección del código fuente
/ErikXu/.NetCoreTips/tree/master/SwaggerFileUpload
Materiales de referencia
/how-to-upload - file-via-swagger-in-asp-net-core-web-api/
Resumen
Lo anterior es la introducción del editor sobre cómo usar Swagger para cargar archivos. Espero que sea útil para todos. Si tiene alguna pregunta, déjeme un mensaje y el editor le responderá a tiempo. ¡También me gustaría agradecer a todos por su apoyo al sitio web de Script House!