首页 文章

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

提问于
浏览
0

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

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

我可以使用 postman 使用以下 url http://localhost/api/Data/search向此方法发送 post 请求

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

我无法在 asp.netcore web api 项目中做同样的事情。路由是控制器级别 i.e'/api/ [7]',每次我发布时,只有 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

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

    [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+"\"}";
    }
    

    然后发布给他们。

相关问题