根據docs我可以爲每個資源定義自定義操作。這是REST API資源我感興趣的配置(見postman進口link):
http://0.0.0.0:9000/api/properties_by_address
method: POST
post data: raw json:
{
"address" : "%address%"
}
在我的服務建立資源(我把它叫做搜索,看到js當量):
window.API_HOST ="http://localhost:9000/api/";
angular.module("app.services", [])
.factory("Properties", [
"$resource"
($resource) ->
$resource API_HOST + "properties/:id", null,
search:
method: 'POST'
url: API_HOST + 'properties_by_address'
params:
hello: 'good world'
address: 'good address'
])
我試着像一個指令調用該如此(見this爲JS轉換):
.directive('homeSearch', ['Properties', (properties) ->
restrict: 'AEC'
replace: false
templateUrl: '/partials/home_search.html'
link: (scope, elem, attrs) ->
button = elem.find('.button')
button.bind "click", ->
console.log "address searched" + scope.address
properties.search {}, address: scope.address
return
])
怪異STU ff發生在這裏..首先,而不是使方法調用'POST'它使用'選項',而不是..進一步..它只使用默認定義中設置的參數(即良好的世界,良好的地址..而不是在scope.address值..我測試是有效的)查看請求的摘要/響應這個鉻devtools截圖:
問題: - 如何使該服務使用我使用時使用的參數嗎? - 我如何指定它將參數作爲後JSON數據..而不是追加到查詢字符串?
Hum ..看起來有很多約定和紅色區域和..我認爲整點是簡化了整個事情..這樣做與原始jQuery的更簡單!有人建議我使用restangular或更低級別的$ http對象,並省去IMO的麻煩 – abbood
它使事情變得更簡單。該慣例是爲了防止您在嘗試發佈到服務器的資源中設置默認參數。它也擺脫了許多鍋爐板代碼,否則你必須使用'$ http'創建。另外,您是否考慮過爲搜索功能發佈POST請求不是很RESTful?如果你有服務器的控制權,你能不能通過你的'/ properties'端點中的地址進行搜索:發佈一個像'Properties.query({address:$ scope.address})'這樣的搜索,生成一個'GET'屬性?地址= [PARAM]'? – Mike