gpt4 book ai didi

ruby-on-rails - 如何在 REST API 中为当前用户提供路由?

转载 作者:行者123 更新时间:2023-12-03 17:34:29 25 4
gpt4 key购买 nike

所以我在我的路由中定义了一个简单的 users 资源。

resources :users

我需要提供一个路由,以便登录用户可以在前端获取他的信息。我考虑过这样做:

resources :users do
get 'current' , on: :collection
end

但这在语义上意味着路由给出了当前用户的列表,而不是当前用户。事实上,如果我执行 rake routes,它会将路径前缀显示为:current_users

我可以通过执行以下操作来绕过路径前缀:

get '/users/current' => 'users#current', as: 'current_user'

但这看起来仍然提供了一个用户列表。所以,我想知道是否有一种“正确的方法”来做这种事情,以及如何在 Rails 中做这件事?还是我想太多了,我拥有的东西很好?

最佳答案

if there was a 'right way'

“正确”的方法是使用 singular resource :

#config/routes.rb
resource :user #-> url.com/user -> users#show

当然,“正确”的方式意味着存在“错误”的方式,事实并非如此。

编程是为数不多的可以为所欲为的实践之一,只要达到结果即可。当然,您如何实现该结果可能会受到批评;最终,有无数种方法可以实现它...

#config/routes.rb
resources :users do
get :current, on: :collection #-> url.com/users/current -> users#current
end

#app/controllers/users_controller.rb
class UsersController < ApplicationController
def current
@user = current_user
end
end

以上(您的代码)执行我的代码执行的操作,只是方式不同。

只是因为您使用的是 collection路线,并不意味着你需要通过一个集合。 “collection”路由主要针对Rails路由结构;路由与您的后端代码无关。

--

这也意味着您应该愿意尝试使用选项/开关来自定义您的路由:

#config/routes.rb
resource :user, path: "current_user", as: :current_user #-> url.com/current_user -> users#show

关于ruby-on-rails - 如何在 REST API 中为当前用户提供路由?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35109024/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com