Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 预期JSON数据的API Post事件的本地测试_C#_Asp.net Web Api - Fatal编程技术网

C# 预期JSON数据的API Post事件的本地测试

C# 预期JSON数据的API Post事件的本地测试,c#,asp.net-web-api,C#,Asp.net Web Api,我的API控制器中有一个POST IHttpActionResult方法,它使用[FromBody]属性 [Route("gameworld/generate")] public IHttpActionResult PostNewWorld([FromBody] WorldData json) 通常,当我想在本地测试我的控制器时,我只需转到URL 但是,我无法使用此方法执行此操作,因为我遇到以下错误: 请求的资源不支持http方法“GET” 有没有办法让我的本地环境看到这是一个

我的API控制器中有一个POST IHttpActionResult方法,它使用[FromBody]属性

    [Route("gameworld/generate")]
    public IHttpActionResult PostNewWorld([FromBody] WorldData json)
通常,当我想在本地测试我的控制器时,我只需转到URL

但是,我无法使用此方法执行此操作,因为我遇到以下错误:

请求的资源不支持http方法“GET”

有没有办法让我的本地环境看到这是一个事后事件?
谢谢

首先,ASP.NET Web Api足够聪明,可以将json反序列化到对象中,因此,除非您真的希望正文中有字符串值,否则您可以将类型放在其中

[Route("gameworld/generate")]
public IHttpActionResult PostNewWorld([FromBody] WorldData newWorld)
您可以使用或之类的工具手动测试它,但手动测试通常只执行一次,然后就被忘记了。这为回归错误打开了大门,在回归错误中,您将在将来进行更改,忘记重新测试端点,并使用api中断应用程序

因此,您应该编写单元测试来不断检查代码并防止回归错误。我已经在几个项目中使用过,您可以测试路由和实际呼叫。例如:

MyWebApi
.Server()
    .Working()
    .WithHttpRequestMessage(req => req
        .WithRequestUri("api/bugs")
        .WithMethod(HttpMethod.Post)
        .WithContent(myJsonString)
    .ShouldReturnHttpResponseMessage()
    .WithStatusCode(HttpStatusCode.Created)
    .WithResponseModelOfType<BugReport>()
    .Passing(r => r != null);
MyWebApi
.Server()
.工作()
.WithHttpRequestMessage(req=>req
.WithRequestUri(“api/bugs”)
.WithMethod(HttpMethod.Post)
.WithContent(myJsonString)
.ShouldReturnHttpResponseMessage()
.WithStatusCode(HttpStatusCode.Created)
.WithResponseModelOfType()
.Passing(r=>r!=null);

<> P>有很多事情要测试,所以一定要阅读.< /P>你应该考虑使用一个具有这些属性的类。erty.
[FromBody]
进行json转换。使用类似于Postman for Chrome的工具来测试API请求。它允许您手动设置请求方法(GET、POST、PUT、DELETE等)、标题、请求正文等。