如何在 C# ApiController 中发送字节数组
How to send byte array in c# ApiController
有人能告诉我如何测试这个功能吗:
[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);
}
我真的不知道如何通过 swagger、postman 或 curl 来测试这个 API。问题是 byte[],如何发送?
有没有人如何测试这些 api?
或者,如果有另一种方式发送任何文件(pdf、txt、docx、...)与任何图片(jpg、png、...)的组合而无需 byte[],我很乐意听到。
我会对字节数组进行 base64 编码并将模型属性从 byte[]
更改为 string
。这应该允许您 post 这些字符串到您的控制器,您可以在其中将它们转换回字节数组。
要编码为 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;
}
要使用 postman 进行测试,您可以使用 javascript 函数 atob()
和 btoa()
将字节数组转换为 base 64 编码字符串,反之亦然。
有人能告诉我如何测试这个功能吗:
[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; }
}
我们通过 :
启用了 Swaggerpublic 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);
}
我真的不知道如何通过 swagger、postman 或 curl 来测试这个 API。问题是 byte[],如何发送? 有没有人如何测试这些 api?
或者,如果有另一种方式发送任何文件(pdf、txt、docx、...)与任何图片(jpg、png、...)的组合而无需 byte[],我很乐意听到。
我会对字节数组进行 base64 编码并将模型属性从 byte[]
更改为 string
。这应该允许您 post 这些字符串到您的控制器,您可以在其中将它们转换回字节数组。
要编码为 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;
}
要使用 postman 进行测试,您可以使用 javascript 函数 atob()
和 btoa()
将字节数组转换为 base 64 编码字符串,反之亦然。