我如何将数据从angular post传递到web api post
How do I pass data from angular post to web api post
我有一个角post方法,通过它我想传递数据到web api post,但似乎不工作。我能做错什么吗?
customerPersistenceService.js
var customerPersistenceService = function ($http, $q) {
return {
save: function(customer) {
var deferred = $q.defer();
$http.post("/api/customers", customer)
.success(deferred.resolve)
.error(deferred.reject);
return deferred.promise;
},
update: function(customer) {
var deferred = $q.defer();
$http.put("/api/customers/{id}" + customer.id, customer)
.success(deferred.resolve)
.error(deferred.reject);
return deferred.promise;
}
};
};
customerEditCtrl.js
function customerEditCtr($stateParams, $location, customerPersistenceService) {
var vm = this;
vm.editableCustomer = {};
vm.selectedCustomerId = $stateParams.id;
customerPersistenceService.getById(vm.selectedCustomerId).then(
function (customer) {
vm.editableCustomer = customer;
});
};
vm.saveCommand = function () {
if (saveCustomer) {
var customer = vm.editableCustomer;
customer.id = vm.selectedCustomerId;
if (customer.id !== 0) {
customerPersistenceService.update(customer).then(
function (result) {
return result.data;
});
} else {
customerPersistenceService.save(customer).then(
function (result) {
return result.data;
});
}
}
};
};
在 customerapiconcontroller .cs中,我的方法如下所示:
[HttpPost]
public HttpResponseMessage Post([FromBody]Customer newCustomer)
{
try
{
if (ModelState.IsValid)
{
_customerService.AddNewCustomer(newCustomer);
return Request.CreateResponse(HttpStatusCode.Created, newCustomer);
}
else
{
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
}
}
catch (Exception ex)
{
return Request.CreateErrorResponse(HttpStatusCode.NotFound, ex);
}
}
[HttpPut]
public HttpResponseMessage Put(int id, [FromBody]Customer editableCustomer)
{
if (!ModelState.IsValid)
{
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
}
if (id != editableCustomer.Id)
{
return Request.CreateResponse(HttpStatusCode.BadRequest);
}
try
{
_customerService.UpdateCustomer(editableCustomer);
return Request.CreateResponse(HttpStatusCode.OK, "{success:'true', verb:'PUT'}");
}
catch (DbUpdateConcurrencyException ex)
{
return Request.CreateErrorResponse(HttpStatusCode.NotFound, ex);
}
}
更新:经过一番调查,我了解了vm。editableCustomer似乎包含了一个所有客户对象的数组,这使得它很难传递给Web API POST。我不明白这个对象是如何与所有客户对象分配的。
有明显的错误:
$http.put("/api/customers/{id}" + customer.id, customer)
这将尝试PUT到一个url,像这样:
http://yoursite/api/customers/{id}927
您需要删除{id}
部分,以便您的url是正确的:
http://yoursite/api/customers/927
用大括号括起来的段只存在于服务器端路由模板中,用于从传入的URI中提取参数。
相关文章:
- Python Flask Web服务器未接收到JSON ajax POST请求,服务器返回HTTP 200 OPTION
- 如何使用 AJAX 发送 POST 数据?以及如何在Web API中获取POST数据
- 通过电子邮件将 AJAX POST 发送到 Web API
- How to POST javascript Blob to JAX-WS Web service
- 多个链式 jQuery AJAX POST Web 服务调用
- jQuery ajax post current date time ASP.NET web API
- 如何使用 Web 表单(不是 MVC 或 asmx 页面)从 ajax Http POST 获取 c# 服务器端的复选框
- AngularJS $http.post ASP.NET 具有简单类型参数的 Web API 控制器
- AngularJS允许POST或PUT跨域的Web服务
- 如何使用Angular将JSON和文件POST到web服务
- Python POST JSON-是必需的web框架
- AngularJS$http://.NET Web API-获取400(错误请求)或NULL POST操作方法参数
- 如何在POST方法之后将更改应用于web
- Angular 2 http post null Web Api Core
- 为什么我没有使用$.post()从我的Sinatra web服务获得响应?
- Web API字符串参数和POST值
- 访问javascript端POST请求返回的IEnumerable (web API)
- 如何在R中使用POST从web请求数据
- 使用POST调用RESTFUL web服务
- 跨域$.ajax POST到REST Web服务