我正在尝试在 rest api 的调用后发送数据。由于数据很大,所以我无法使用查询字符串发送它。 下面是我的Ajax帖子电话,
var urlstring = 'http://localhost/PersonAPI/api/Operations/TestMethod'
$.ajax({
type: "POST",
url: urlstring,
contentType: "application/json; charset=utf-8",
dataType: "json",
data:
{
'employeedetails':JSON.stringify(exceljson)
},
success: function (data) {
//Some operation
}
});
我的 Rest api 包含多个发布方法, 下面是 API 控制器,
public class OperationsController : ApiController
{
[System.Web.Http.HttpPost]
[HttpRoute("api/Operations/UploadDetails")]
public HttpResponseMessage UploadDetails(string EmployeeDetails)
{
//SomeCode
return Request.CreateResponse(HttpStatusCode.OK, response.GenerateResponse());
}
[System.Web.Http.HttpPost]
[System.Web.Http.ActionName("TestMethod")]
public HttpResponseMessage TestMethod(string EmployeeDetails)
{
//SomeCode
return Request.CreateResponse(HttpStatusCode.OK, response.GenerateResponse());
}
}
发送呼叫后,它显示 404 错误。 我尝试使用表单数据,但它返回字符串数组。 我正在传递对象列表。此对象有 6 个属性。输入列表在从jquery传递时被转换为json字符串。 我不知道如何传递数据
目前,EmployeeDetails
需要一个查询字符串参数。您应该使用[FromBody]
:
[System.Web.Http.HttpPost]
[System.Web.Http.ActionName("TestMethod")]
public HttpResponseMessage TestMethod([FromBody]EmployeeDetails employeeDetails)
{
//SomeCode
return Request.CreateResponse(HttpStatusCode.OK, response.GenerateResponse());
}
并创建相应的模型:
public class EmployeeDetails
{
// add your properties
}
在前端,您的请求对象应如下所示:
{
type: "POST",
url: urlstring,
contentType: "application/json; charset=utf-8",
dataType: "json",
data: JSON.stringify(exceljson)
}
> 404 错误表示客户端能够与给定服务器通信,但服务器找不到请求的内容。我认为您应该首先在POSTMAN中检查您的API。它是否有效。我可以看到您的后端代码吗,所以我可以尝试解决您的问题
当我使用 HttpRoute 时,这个问题已经解决了
下面是代码,
[HttpRoute("api/operations/TestMethod")]
public HttpResponseMessage TestMethod(string EmployeeDetails)
{
//SomeCode
return Request.CreateResponse(HttpStatusCode.OK, response.GenerateResponse());
}