我创建了非核心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+"\"}";
}
答案 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+"\"}";
}
然后发帖给他们。