如何在c#ApiController

时间:2018-11-27 10:55:56

标签: c# curl swagger postman asp.net-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);
}

我真的不知道如何通过招摇,邮递员或卷曲来测试此API。问题是byte [],如何发送呢? 有人可以测试这种api吗?

或者,如果有另一种方式发送没有字节[]的任何文件(pdf,txt,docx,...)与任何图片(jpg,png,...)组合,我将很高兴听到。

1 个答案:

答案 0 :(得分:4)

我将对字节数组进行base64编码,并将模型属性从字节数组byte[]更改为string。它应该允许您将这些字符串发布到控制器上,在其中可以将它们转换回字节数组。

要使用base64字符串进行编码,请使用string byteString = Convert.ToBase64String(byteArray),然后使用byte[] byteArray = Convert.FromBase64String(byteString)进行转换。

要使用邮递员进行测试,您可以使用JavaScript函数atob()btoa()将字节数组转换为以64为基数的字符串,反之亦然。