只能在asp.net核心webapi中发布post方法

时间:2017-08-02 10:37:43

标签: asp.net json http-post asp.net-core-webapi

我创建了非核心webapi项目来与移动应用程序进行交互。例如,如果我创建了一个名为Data的控制器,它有一个名为Search的方法,如下图所示。该项目已配置为发送和接收json数据。

[HttpPost]
public Searchresult search(SearchQuery s)
{
   // code to search
    return sr; //object of type Searchresult
}

我可以使用postman使用以下网址向此方法发送帖子请求      http://localhost/api/Data/search

类似地,我可以在控制器内创建其他函数,并使用路径'/ api / [controller] / [action]'调用它们。

我在asp.netcore web api项目中无法做到这一点。路由是控制器级别,即'/ api / [controller]',每次我发布时,只有post方法被击中。以下列方式实施。当我发布到“http://localhost/api/Data

时,它会被执行
[HttpPost]
public string Post([FromBody] testclass t)
{
    return "{\"a\":\"" + t.a + "\",\"b\":\"" + t.b + "\"}";
}

当我发布到“http://localhost/api/Data/test

时,永远不会执行以下代码
    [HttpPost]
    public string test([FromBody] testclass t)
    {
        return "{\"a\":\""+t.a+"\",\"b\":\""+t.b+"\"}";
    }

1 个答案:

答案 0 :(得分:0)

这很可能是因为您的控制器并不了解您的路线之间的差异。您需要明确定义路径,如下所示:

[HttpPost("post")]
public string Post([FromBody] testclass t)
{
    return "{\"a\":\"" + t.a + "\",\"b\":\"" + t.b + "\"}";
}

[HttpPost("test")]
public string Test([FromBody] testclass t)
{
    return "{\"a\":\""+t.a+"\",\"b\":\""+t.b+"\"}";
}

然后发帖给他们。