Может ли кто-нибудь рассказать мне, как я могу проверить эту функцию:
[RoutePrefix("service")]
public class TestControler : ApiController
{
[Route("function-route")]
[HttpPost]
public HttpResponseMessage Testfunction(TestData t_testData )
{
...
HttpResponseMessage httpResponseMessage = Request.CreateResponse(HttpStatusCode.OK);
return httpResponseMessage;
}
}
public class TestData
{
public byte[] PreviewImage { get; set; }
public byte[] FileAsByteArray { get; set; }
}
У нас есть Swagger через:
public void Configuration(IAppBuilder appBuilder)
{
// Configure Web API for self-host.
HttpConfiguration config = new HttpConfiguration();
//Using AttributeRoutes
config.MapHttpAttributeRoutes();
//Swagger
config.EnableSwagger(c =>{
c.SingleApiVersion("v1", "My Test API");
}).EnableSwaggerUi();
appBuilder.UseWebApi(config);
}
Я действительно не знаю, как протестировать этот API с помощью swagger, postman или curl. Проблема в байте [], как это послать? Кто-нибудь, как тестировать такие api?
Или, если есть другой способ отправить любой файл (pdf, txt, docx, ...) в сочетании с любым изображением (jpg, png, ...) без byte [], я был бы рад услышать.





Я бы base64 закодировал массивы байтов и изменил свойства вашей модели с byte[] на string. Это должно позволить вам отправлять эти строки на ваш контроллер, где вы можете преобразовать их обратно в байтовые массивы.
Чтобы кодировать как строку base64, используйте string byteString = Convert.ToBase64String(byteArray) и конвертируйте обратно с помощью byte[] byteArray = Convert.FromBase64String(byteString).
Ваш обновленный код может выглядеть примерно так:
public class TestData
{
public string PreviewImage { get; set; }
public string FileAsByteArray { get; set; }
}
[Route("function-route")]
[HttpPost]
public HttpResponseMessage Testfunction(TestData t_testData)
{
// convert base64 string to byte[]
byte[] preview = Convert.FromBase64String(t_testData.PreviewImage);
byte[] file = Convert.FromBase64String(t_testData.FileAsByteArray);
...
HttpResponseMessage httpResponseMessage = Request.CreateResponse(HttpStatusCode.OK);
return httpResponseMessage;
}
Чтобы протестировать с помощью почтальона, вы можете использовать функции javascript atob() и btoa() для преобразования массива байтов в строку с кодировкой base 64 и наоборот.
Вы можете попробовать HttpPostedFileBase вместо byte []