如何使用JQuery调用HttpPost方法



我有一个WebAPI。

[HttpPost]
[Route("syncData")]
public async Task<IHttpActionResult> syncData(string webUrl, string Title, string Id)
{
try
{
...
}
}

尝试使用 JQuery 调用此 API,

var settings = {
"url": "https://localhost:44370/api/SPHome/syncData",
"method": "POST",
"timeout": 0,
"Content-Type": "application/json",
"data": JSON.stringify({
"webUrl": "Url",
"Title": "Test",
"Id": "Sample"
})
};
$.ajax(settings).done(function (response) {
console.log(response);
});

如果我在查询中传递所有三个参数,它就会命中我的 API,但是当我在正文内容中传递数据时,我得到状态代码:404

我可以知道我在这里错过了什么吗?

发生这种情况是因为 .NET 找不到与你为其提供的有效负载匹配的 POST 路由。您正在将对象传递给操作,但该操作需要参数。

您需要将控制器操作的参数转换为具有所需三个字段的对象,例如

public class MyObject
{
public string WebUrl {get;set;}
public string Id {get;set;}
public string Title {get;set;}
}

那么在控制器动作本身——

public async Task<IHttpActionResult> syncData(MyObject smartNameHere)