Я работаю над веб-API, разработанным в .net 7. Существует конечная точка, которая получает [FromForm] для объекта, содержащего IFormFile, перечисление, и строку.
Конечная точка работает как положено, я могу отправлять файлы и заполнять всю необходимую информацию с помощью Swagger.
Проблема связана с клиентом Refit. Я уже пробовал два разных подхода, но всегда получаю исключение NotFound.
Вот пример кода, который я использовал.
// FilesController
[HttpPost("/files", Name = nameof(UploadFile))]
public async Task UploadFile(
[FromForm] UploadFileRequest request, CancellationToken cancellationToken)
{
// code
}
// FileRequest
public record UploadFileRequest
{
public required IFormFile File { get; set; }
public required FilePurpose Type { get; set; }
public required string Description { get; set; }
}
public enum FilePurpose{
Input,
Output
}
В разделе «Переоборудование» я попробовал две попытки:
// Попытка 1
[Multipart]
[Post("/files")]
Task UploadFile(
UploadFileRequestRefit request,
CancellationToken cancellationToken = default);
public record UploadFileRequestRefit
{
public required MultipartItem File { get; set; }
public required FilePurpose Type { get; set; }
public required string Description { get; set; }
}
// Попытка 2
[Multipart]
[Post("/files")]
Task UploadFile(
[AliasAs("file")] MultipartItem file,
[AliasAs("type")] FilePurpose type,
[AliasAs("description")] string description,
CancellationToken cancellationToken = default);
Подробнее здесь: https://stackoverflow.com/questions/783 ... fit-dotnet