我正在使用Angular的資源模塊訪問Web API,但由於API使用URI作爲主鍵,所以遇到了問題。冒號不在資源參數中被URL編碼
每當我嘗試打電話給這個API,傳入一個URI作爲字符串參數,我得到400 Bad Request
錯誤。經過仔細觀察,Resource在URI中轉義所有正斜槓,而不是在開始時轉義冒號。它正在對一個如下所示的URL進行GET:http://myserver/api/objects/http:%2F%2Fexample.comk%2FmyURI%2F
,這當然是無效的。我也嘗試用反斜槓轉義冒號,但這也不起作用。
我該如何讓資源正確逃避我的參數?在撥打電話之前,我已嘗試用%3A
替換冒號,但導致%
再次被編碼,返回404 Not Found
。
的業務處理資源是這樣的:
angular.module('adminApp').factory('MyObject', myObject);
function myObject($resource) {
return $resource('/api/objects/:uri');
};
,我稱它是這樣的:
MyObject.get({ uri: myUri }, function(result) {
...
});
您是否嘗試在冒號之前添加反斜槓? – Voreny
@Voreny是的,它看起來像這樣:'http:// myserver/api/objects/http%5C:%2F%2Fexample.comk%2FmyURI%2F',所以沒有更好的! – Mourndark