使用 $resource 从 AngularJs 中的 Web API 访问 HttpResponseMessage
Access HttpResponseMessage from Web API in AngularJs using $resource
我有一个 c# web api 方法returning 整数值作为 HttpResponseMessage
,想使用 $resource 从 AngularJs 中的响应访问相同的值, 怎么样?
网络API:
[HttpPut]
[Route("DeleteFile")]
public HttpResponseMessage DeleteFile(int cabinetFileID)
{
var fileName = cabinetDataAccess.GetFilePath(cabinetFileID);
var returnVal = cabinetDataAccess.DeleteCabinetFile(cabinetFileID, UserEmail);
return Request.CreateResponse(HttpStatusCode.OK, returnVal);
}
服务:
(function () {
'use strict';
angular
.module('data')
.factory('cabinetService', cabinetService);
cabinetService.$inject = ['$resource', 'serviceBase'];
function cabinetService($resource, serviceBase) {
var deleteCabinetFileResource = $resource(serviceBase + '/api/Cabinet/DeleteFile?cabinetFileID=:cabinetFileID',null,{'update':{method:'PUT'}});
return {
deleteCabinetFile: deleteCabinetFile
};
function deleteCabinetFile(cabinetFileID){
return deleteCabinetFileResource
.update({cabinetFileID:cabinetFileID},null)
.$promise;
}
}
}());
控制器:
function deleteThumbnail(cabinetFileID)
{
cabinetService
.deleteCabinetFile(cabinetFileID)
.then(function (data) {
//How do i Access my return value here ???
//Something like
if(data.returnVal === -1)
//do something
})
.catch(function (err) {
growl.err('Unable to delete file, Please try later !', {ttl: 20000});
})
}
此代码正在获取响应,我需要如何访问数据中的 return 值?
根据 https://whosebug.com/users/5535245/georgeawg 评论将我的 c# 代码更改为 return 一个 Json 对象,一切正常。
[HttpPut]
[Route("DeleteFile")]
public JObject DeleteFile(int cabinetFileID)
{
var fileName = cabinetDataAccess.GetFilePath(cabinetFileID);
var returnVal = cabinetDataAccess.DeleteCabinetFile(cabinetFileID, UserEmail);
var jsonString = Json(new JavaScriptSerializer().Serialize(new { returnVal }));
return JObject.Parse(jsonString.Content);
}
在我的 AngularJs 控制器中,我可以检查 if(data.returnVal === -1)
我有一个 c# web api 方法returning 整数值作为 HttpResponseMessage
,想使用 $resource 从 AngularJs 中的响应访问相同的值, 怎么样?
网络API:
[HttpPut]
[Route("DeleteFile")]
public HttpResponseMessage DeleteFile(int cabinetFileID)
{
var fileName = cabinetDataAccess.GetFilePath(cabinetFileID);
var returnVal = cabinetDataAccess.DeleteCabinetFile(cabinetFileID, UserEmail);
return Request.CreateResponse(HttpStatusCode.OK, returnVal);
}
服务:
(function () {
'use strict';
angular
.module('data')
.factory('cabinetService', cabinetService);
cabinetService.$inject = ['$resource', 'serviceBase'];
function cabinetService($resource, serviceBase) {
var deleteCabinetFileResource = $resource(serviceBase + '/api/Cabinet/DeleteFile?cabinetFileID=:cabinetFileID',null,{'update':{method:'PUT'}});
return {
deleteCabinetFile: deleteCabinetFile
};
function deleteCabinetFile(cabinetFileID){
return deleteCabinetFileResource
.update({cabinetFileID:cabinetFileID},null)
.$promise;
}
}
}());
控制器:
function deleteThumbnail(cabinetFileID)
{
cabinetService
.deleteCabinetFile(cabinetFileID)
.then(function (data) {
//How do i Access my return value here ???
//Something like
if(data.returnVal === -1)
//do something
})
.catch(function (err) {
growl.err('Unable to delete file, Please try later !', {ttl: 20000});
})
}
此代码正在获取响应,我需要如何访问数据中的 return 值?
根据 https://whosebug.com/users/5535245/georgeawg 评论将我的 c# 代码更改为 return 一个 Json 对象,一切正常。
[HttpPut]
[Route("DeleteFile")]
public JObject DeleteFile(int cabinetFileID)
{
var fileName = cabinetDataAccess.GetFilePath(cabinetFileID);
var returnVal = cabinetDataAccess.DeleteCabinetFile(cabinetFileID, UserEmail);
var jsonString = Json(new JavaScriptSerializer().Serialize(new { returnVal }));
return JObject.Parse(jsonString.Content);
}
在我的 AngularJs 控制器中,我可以检查 if(data.returnVal === -1)