路由配置

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;
}

我想发布一些数据,如截图所示
asp.net-mvc - Web API POST方法-LMLPHP
我发现一个错误
"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

10-07 12:27
查看更多