当前位置:  开发笔记 > 编程语言 > 正文

带参数的webapi post方法不起作用

如何解决《带参数的webapipost方法不起作用》经验,为你挑选了1个好方法。

当我调用包含带NO参数的post方法的webAPI控制器时,它会转到该方法.但是,当我传递参数(以及当我用参数更新api控制器)时,请参阅第一个片段下方的片段,我得到405错误,它不支持POST.

var captchURL = "/api/Captcha";  
$.ajax({
       url: captchURL,
       dataType: 'json',
       contentType: 'application/json',
       type: 'POST'
})



var jsondata = {solution: "7", answer: "7"};
    var captchURL = "/api/Captcha";  
    $.ajax({
           url: captchURL,
           dataType: 'json',
           contentType: 'application/json',
           type: 'POST',
           data: JSON.stringify(jsondata)
    })

更新 - 控制器代码:

public class CaptchaController : ApiController
{
    private readonly ICaptchaService _service;
    public CaptchaController(ICaptchaService service)
    {
        _service = service;
    }

    public Captcha Get()
    {
        return _service.Get();
    }

    [HttpPost]
    public bool Post(string solution, string answer)
    {
        return _service.Post();

    }
}

更新 - WebApiConfig:

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );

是因为我没有解决方案并回答params(在我的WebApiConfig中)它不能识别它们吗?

我做错了什么?



1> M. Carlson..:

这是设置路线的略有不同的方法,但我更喜欢它.在您的控制器代码中为每个代表GET请求POST的方法添加路由前缀和路由...

[RoutPrefix("Captcha")]
public class CaptchaController : ApiController
{

    [Route("Post/{solution}/{answer}")]
    [HttpPost]
    public bool Post(string solution, string answer)
    {
        return _service.Post();

    }
}

只要您正确设置路径,使用正确键入的参数并返回正确键入的值,这应该有效.如果使用模型,则不必将参数添加到路径路径中.

当我设置我的WebAPI时,这对我有用.如果有人发现任何错误的解释,请告诉我.我还在学习(而且永远都是),但只是想让你知道我做了什么工作.

推荐阅读
喜生-Da
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有