2014-09-22 43 views
0

所以我試圖使用REST服務將AngularJS前端連接到Java Spring後端。對我的REST webservice的AngularJS DELETE請求是純文本格式?

我的DELETE請求不斷收到以下錯誤(注意者ID =?) - ?爲什麼產生揚聲器ID =代替揚聲器/?

DELETE http://localhost:8082/rest/speaker?id=54200b6b772f1e7b0688307b 405 (Method Not Allowed) 

的代碼如下:

的Java:

@RequestMapping(method = RequestMethod.DELETE, value = "/{id}") 
public void delete(@PathVariable String id) { 
    speakerService.delete(id); 
} 

角JS服務

this.delete = function (id, callback) { 

    SpeakerResource.delete({ id: id }, function() { 
     callback(); 
    }); 

} 

角JS工廠

app.factory('SpeakerResource', function ($resource) { 
return $resource('rest/speaker/:speakerId', 
    { 
     speakerId: '@speakerId' 
    }, 
    { 
     'update': { method: 'PUT' } 
    }, 
    { 
     'delete': { method: 'DELETE', params: {id: '@speakerId' } } 
    } 

如果我使用$ http語句,那麼一切正常,但顯然我想堅持使用工廠作爲PUT/POST方法工作正常!

$http.delete('http://localhost:8080/rest/speaker/' + data.id); 

乾杯,

回答

1

我想你應該刪除params對象上刪除操作或參數重命名爲speakerId,否則AngularJS不能設置URL參數在資源(您的網址佔位符是speakerId,但你的屬性名爲ID)

+0

嗨,不得不這樣做(變化speakerId),我也不得不刪除引號'周圍的名稱刪除。 – mickske 2014-09-22 12:29:07