gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 22:07:08 25 4
gpt4 key购买 nike

当我调用我的 webAPI Controller 时,它包含一个没有参数的 post 方法,它会转到该方法。但是,当我将参数(以及当我也使用参数更新 api Controller )传递到这里时,请参阅第一个片段下面的片段,我收到 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)
})

更新 - Controller 代码:

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

是不是因为我没有解决方案和答案参数(在我的 WebApiConfig 中)它无法识别它们?

我做错了什么?

最佳答案

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

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

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

}
}

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

这在我设置 WebAPI 时对我有用。如果有人发现解释有任何问题,请告诉我。我仍在学习(并且永远都是),但只是想让您知道我所做的工作。

关于c# - 带参数的 webapi post 方法不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34444738/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com