Tôi đang phát triển một REST api dựa trên đường ray. Để sử dụng api này, bạn PHẢI được đăng nhập. Về điều đó, tôi muốn tạo một phương thức me
trong bộ điều khiển người dùng của tôi sẽ trả về một json của các thông tin người dùng đã đăng nhập. Vì vậy, tôi không cần số :id
để được chuyển vào URL. Tôi chỉ muốn gọi http://domain.com/api/users/meTuyến đường ray: GET mà không có thông số: id
Vì vậy, tôi cố gắng này:
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
Như bạn có thể thấy, con đường tôi chờ đợi một id, nhưng tôi muốn để có được một cái gì đó giống như devise có. Một cái gì đó dựa trên id current_user
. Ví dụ bên dưới:
edit_user_password GET /users/password/edit(.:format) devise/passwords#edit
Trong ví dụ này bạn có thể chỉnh sửa mật khẩu người dùng hiện tại mà không chuyển id làm thông số.
Tôi có thể sử dụng bộ sưu tập thay vì thành viên, nhưng đó là một bộ phận bỏ qua ...
Có ai có ý tưởng không? Cảm ơn bạn
Rực rỡ Arjan. Chính xác những gì tôi cần ... ngoại trừ việc tôi sẽ không có con đường nhưng tôi có thể làm mà không có nó. Chúc mừng. – Gozup
Không sao, bạn có thể thêm đường dẫn bằng cách thêm ': as => 'me''. Điều này sẽ thêm 'me_path' và' me_url'. – Arjan
Tuyệt vời. Không biết điều đó. Cảm ơn – Gozup