如何测试接收类的web api post方法

时间:2016-07-17 07:10:52

标签: c# json asp.net-web-api postman

我创建了一个ASP.NET Web API,它有一个名为InsertImage的控制器。这有一个HttpPost方法,可以将数据插入数据库,并且是ImageData方法。此方法接收类型为public class ImageSaveController : ApiController { [HttpPost] public IHttpActionResult InsertImage(ImageData imageData) { System.Data.SqlClient.SqlConnection conn = null; try { //Image save to database code here } catch (Exception ex) { return Content(HttpStatusCode.NotModified, ex.Message); } finally { if (conn != null) conn.Close(); } return Content(HttpStatusCode.OK,""); } } //ImageData class public class ImageData { public int Id { get; set; } public byte[] ImageValue { get; set; } } 的对象作为参数。控制器和参数类的代码如下:

ImageValue

我想从客户端测试它。您可以注意到,ImageData类的byte属性是json数组。不确定如何将C#类参数传递给此方法。理想情况下,我想将参数作为json传递,我不确定如何为此目的构造SELECT M.DATE_DOCU, (SELECT I.LIN FROM INVE01 I WHERE I.CVE_ART = M.CVE_ART) AS LINE FROM MINVE01 M GROUP BY M.DATE_DOCU, M.CVE_ART 。我也不确定是否可以使用名为postman的chrome应用程序进行测试。

2 个答案:

答案 0 :(得分:2)

打开邮递员输入你的网址动作:
添加标题:Content-Type - application / json。
在body标签中选中“raw”(JSON)并输入您的数据。

POST /api/ImageSave/InsertImage/ HTTP/1.1
Host: localhost:32378
Content-Type: application/json
Cache-Control: no-cache
{
    "id" : 1,
    "imageValue" : [11,141,123,121]
}

来源Web API 2 POST request simulation in POSTMAN Rest Client

如果您想进行更好的测试,更好的解决方案是编写单元测试。

答案 1 :(得分:2)

这是我用来做的事情: 使用像Postman或Fiddler这样的REST客户端测试程序。我使用的是Postman,它是Google Chrome的应用程序。

为了便于构建JSON,您可以在控制器上创建一个HttpGet方法,并返回一个伪造的ImageData并从Postman调用它。在这里,您将看到JSON并将其用于POST方法的输入。

public class ImageSaveController : ApiController
{
    public ImageData Get()
    {
         return new ImageData
         {
             // insert test data here
         };
    }

    [HttpPost]
    public IHttpActionResult InsertImage(ImageData imageData)
    {
        System.Data.SqlClient.SqlConnection conn = null;
        try
        {               
            //Image save to database code here
        }
        catch (Exception ex)
        {
            return Content(HttpStatusCode.NotModified, ex.Message);
        }
        finally
        {
            if (conn != null)
                conn.Close();
        }
        return Content(HttpStatusCode.OK,""); 
    }
}