PUT 时 Restangular no BaseUrl
Restangular no BaseUrl when do PUT
我正在使用 Restangular 并尝试 PUT 一些数据,但它似乎丢失了 BaseUrl。
在配置函数中,我为 Restangular 和其他 Restangular 字段定义了 BaseUrl。
Constants.restangularBaseUrl 是 http://192.168.1.100/api/
RestangularProvider.setBaseUrl(Constants.restangularBaseUrl)
.setRestangularFields({
selfLink: '_links.self.href',
id: '_id',
etag: '_etag'
})
.addResponseInterceptor(function(data, operation, what, url, response, deferred){
if (operation === 'getList') {
var result = data._items;
result._meta = data._meta;
result._links = data._links;
return result;
}
return data;
});
然后我有一些像这样的模型:
(function(){
angular.module('models.ebayItems', ['services.constants', 'restangular'])
.service('EbayItems', ['Constants', 'Restangular', function (Constants, Restangular) {
Restangular.extendModel('ebayitems', function(model) {
model.toggleMonitor = function(){
var item = this;
Restangular.one('ebayitems', this._id).patch({active: this.active}, '', {'If-Match': this._etag})
.then(function(data){
item._etag = data._etag;
}, function(error){
console.log('error', error);
});
};
return model;
});
var ebayItems = Restangular.all('ebayitems');
var ebayItemsOneSearch = function(_id){
return ebayItems.customGETLIST('', {where: {searchId: _id}});
};
return {
items: ebayItems,
oneSearch: ebayItemsOneSearch
};
}])
})();
现在,当我尝试对基于该模型的项目执行放置请求时:
item.put()
它使用了错误的 url,我的意思是它丢失了 BaseUrl,所以不要放在:
http://192.168.1.100/api/ebayitems/12345
它放在
http://192.168.1.100/ebayitems/12345
导致 404 错误。
为什么?
我究竟做错了什么?
任何帮助真的很感激。
谢谢
问题是设置一个来自 API 后端的相对 url 的 selfLink 字段会覆盖 BaseUrl。
从有效的配置函数中删除该字段。
RestangularProvider.setBaseUrl(Constants.restangularBaseUrl)
.setRestangularFields({
id: '_id',
etag: '_etag'
})
.addResponseInterceptor(function(data, operation, what, url, response, deferred){
if (operation === 'getList') {
var result = data._items;
result._meta = data._meta;
result._links = data._links;
return result;
}
return data;
});
我正在使用 Restangular 并尝试 PUT 一些数据,但它似乎丢失了 BaseUrl。 在配置函数中,我为 Restangular 和其他 Restangular 字段定义了 BaseUrl。
Constants.restangularBaseUrl 是 http://192.168.1.100/api/
RestangularProvider.setBaseUrl(Constants.restangularBaseUrl)
.setRestangularFields({
selfLink: '_links.self.href',
id: '_id',
etag: '_etag'
})
.addResponseInterceptor(function(data, operation, what, url, response, deferred){
if (operation === 'getList') {
var result = data._items;
result._meta = data._meta;
result._links = data._links;
return result;
}
return data;
});
然后我有一些像这样的模型:
(function(){
angular.module('models.ebayItems', ['services.constants', 'restangular'])
.service('EbayItems', ['Constants', 'Restangular', function (Constants, Restangular) {
Restangular.extendModel('ebayitems', function(model) {
model.toggleMonitor = function(){
var item = this;
Restangular.one('ebayitems', this._id).patch({active: this.active}, '', {'If-Match': this._etag})
.then(function(data){
item._etag = data._etag;
}, function(error){
console.log('error', error);
});
};
return model;
});
var ebayItems = Restangular.all('ebayitems');
var ebayItemsOneSearch = function(_id){
return ebayItems.customGETLIST('', {where: {searchId: _id}});
};
return {
items: ebayItems,
oneSearch: ebayItemsOneSearch
};
}])
})();
现在,当我尝试对基于该模型的项目执行放置请求时:
item.put()
它使用了错误的 url,我的意思是它丢失了 BaseUrl,所以不要放在:
http://192.168.1.100/api/ebayitems/12345
它放在
http://192.168.1.100/ebayitems/12345
导致 404 错误。
为什么? 我究竟做错了什么? 任何帮助真的很感激。 谢谢
问题是设置一个来自 API 后端的相对 url 的 selfLink 字段会覆盖 BaseUrl。 从有效的配置函数中删除该字段。
RestangularProvider.setBaseUrl(Constants.restangularBaseUrl)
.setRestangularFields({
id: '_id',
etag: '_etag'
})
.addResponseInterceptor(function(data, operation, what, url, response, deferred){
if (operation === 'getList') {
var result = data._items;
result._meta = data._meta;
result._links = data._links;
return result;
}
return data;
});