我创建了 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 回答
这很可能是因为您的控制器不了解您的路线之间的差异。您需要明确定义路由,如下所示:
然后发布给他们。