AngularJS와 WebAPI의 Pluralsight 과정을 함께 진행하고 있습니다. PUT
을 사용하여 클라이언트에서 서버로 전송되는 데이터를 저장하려고하는데 데이터가 저장되지 않고 오류가 발생하지 않습니다. 또한 중단 점이 포착되지 않아 이벤트가 올바른 서버 측 코드에 도달하지 않습니다. HTTP
메서드의 형식을 변경하려고했지만이 메서드가 필요합니다. 다시 보내지는 것은 서버의 "204: No Content"
코드입니다.WebAPI에 JSON 데이터가 저장되지 않습니다.
이것은 PUT
과방법이 어떻게 보이는지입니다. 이러한 메서드의 중단 점은 캡처되지 않습니다.
// POST: api/Products
public void Post([FromBody]Product product) // Creating a product
{
var productRepository = new ProductRepository();
var newProduct = productRepository.Save(product);
}
// PUT: api/Products/5
public void Put(int id, [FromBody]Product product) // Updating a product
{
var productRepository = new ProductRepository();
var updatedProduct = productRepository.Save(id, product);
}
ProductRepository
internal Product Save(Product product)
{
// Read in the existing products
var products = this.Retrieve();
// Assign a new Id
var maxId = products.Max(p => p.ProductID);
product.ProductID = maxId + 1;
products.Add(product);
WriteData(products);
return product;
}
internal Product Save(int id, Product product)
{
// Read in the existing products
var products = this.Retrieve();
// Locate and replace the item
var itemIndex = products.FindIndex(p => p.ProductID == product.ProductID);
if (itemIndex > 0)
{
products[itemIndex] = product;
}
else
{
return null;
}
WriteData(products);
return product;
}
이 사용되는 제어기의 주요부이다 (Controller-As syntax
사용 : 마지막
var vm = this;
vm.submit = function() {
vm.message = "";
if (vm.product.productID) {
vm.product.$update({ id: vm.product.productID }, function (data {
console.log(data);
vm.message = "Save Complete";
});
} else {
vm.product.$save(function (data) {
vm.originalProduct = angular.copy(data);
vm.message = "Save Complete";
});
}
};
, productResource는 맞춤 서비스입니다 다음과 같이 표시됩니다.
var productResource = function($resource, appSettings) {
return $resource(appSettings.serverPath + "/api/Products/:id", null, {
'update': { method: 'PUT' }
});
}
CORS
문제인지 확인하려고했지만 클래스 수준에서 사용하도록 설정 한 것이 아닙니다.
귀하의 게시물이어야한다 당신의 API를 확인하고 웹 API 메소드가 표시되지 않습니다에 넣어주세요 아무것도 돌려 주려고. 나는 그들이 응답을 돌려줘야한다고 생각하니? –
@ChrisNevill'204 : No Content'는 기본 응답입니다. 그러나 데이터를 저장하기 위해 사용자 정의 응답을 리턴 할 필요는 없습니다. 그게 바로 문제입니다. – JustinJmnz
디버거가 중단 점을 치지 않는게 이상합니다. IIS에서 디버깅을 할 때 IIS가 아닌 클라이언트가 올바른 서버에 연결되어 있는지 확인하십시오. 나는 웹 API와 항상 중단 점을 사용하고 그들은 일을한다. –