路由配置
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
后置法
[HttpPost]
public Probabilities Post(string word, string userId) {
Request request = new Request();
request.Identify(word, userId);
Probabilities probabilities = probabilitiesFactory.GetBy(request.ProbabilitiesId, "Id");
return probabilities;
}
我想发布一些数据,如截图所示
我发现一个错误
"No action was found on the controller 'Identification' that matches the request."
怎么回事?如何投递2个简单字符串并得到结果
最佳答案
虽然不是强制性的,但是您应该遵循良好的实践并将有效负载封装到模型中。
public class MyModel {
public sting word { get; set; }
public sting userId { get; set; }
}
然后可以使用
FromBody
参数属性将模型绑定到发送的数据。最后,要解决找不到资源的问题,请确保控制器遵循正确的约定,前提是OP配置了基于约定的路由。
public class IdentificationController : ApiController {
[HttpPost]
public Probabilities Post([FromBody] MyModel model) {
string word = model.word;
string userId = model.userId;
Request request = new Request();
request.Identify(word, userId);
Probabilities probabilities = probabilitiesFactory.GetBy(request.ProbabilitiesId, "Id");
return probabilities;
}
}
Reference: Parameter Binding in ASP.NET Web API
Reference: Routing in ASP.NET Web API