Zajmuję się REST api w oparciu o szyny. Aby użyć tego interfejsu API, MUSISZ być zalogowany. W związku z tym chciałbym utworzyć w moim kontrolerze użytkownika metodę me
, która zwróci jsonowi zalogowanego użytkownika. Nie muszę więc podawać adresu URL w postaci :id
. Chcę po prostu zadzwonić http://domain.com/api/users/meTrasy Railsów: GET bez parametrów: id
Więc próbowałem to:
namespace :api, defaults: { format: 'json' } do
scope module: :v1, constraints: ApiConstraints.new(version: 1, default: true) do
resources :tokens, :only => [:create, :destroy]
resources :users, :only => [:index, :update] do
# I tried this
match 'me', :via => :get
# => api_user_me GET /api/users/:user_id/me(.:format) api/v1/users#me {:format=>"json"}
# Then I tried this
member do
get 'me'
end
# => me_api_user GET /api/users/:id/me(.:format) api/v1/users#me {:format=>"json"}
end
end
end
Jak widać, moja droga czeka na identyfikatorze, ale chciałbym dostać coś Devise ma. Coś opartego na identyfikatorze current_user
. Przykład poniżej:
edit_user_password GET /users/password/edit(.:format) devise/passwords#edit
W tym przykładzie można edytować aktualne hasło użytkownika bez przechodzenia id jako param.
mogę użyć kolekcję zamiast członka, ale to brudny obwodnicy ...
Ktoś ma pomysł? Dziękuję
Brilliant Arjan. Dokładnie to, czego potrzebowałem ... z tym wyjątkiem, że nie będę miał ścieżki, ale bez niej będę mógł. Twoje zdrowie. – Gozup
Nie ma problemu, możesz dodać ścieżkę, dodając: ': as => 'me''. Spowoduje to dodanie 'me_path' i' me_url'. – Arjan
Świetnie. Tego nie wiedziałem. Dzięki – Gozup