我正在创建一个应用程序,该应用程序还将使第三方站点能够对其用户数据库进行身份验证。我正在使用Devise并以下列方式为我的路由添加了一个API命名空间(随着我进一步改进,因为我将向API添加更多路由):
devise_scope :user do
resources :users
put 'change_plan', :to => 'users#change_plan'
namespace :api, constraints: { format: :json } do
resources :sessions, :only => [:create, :destroy]
end
end
我为我的会话覆盖了Devise控制器,并对销毁操作进行了以下操作:
def destroy
resource = User.find_by_authentication_token(params[:auth_token]||request.headers["X-AUTH-TOKEN"])
resource.authentication_token = nil
resource.save
sign_out(resource_name)
render :json => {:message => "User signed-out"}.to_json, :status => :ok
end
使用Postman测试API时,我可以获得创建路径(以及应用程序中响应JSON的所有其他路径)以完美地工作并返回正确的结果。但是,无论我尝试什么,我都无法让DELETE路由工作。我已经完成了大约十个教程,并尝试了基于它们的替代方案,所有这些都给了我以下错误的变体:没有路由匹配[删除]" /"
我也尝试过使用"匹配"等变体。这适用于创建会话和生成令牌但不适用于删除。我也尝试过Postman中没有运气的每个URL组合/变体。在这个阶段,我想知道Postman / Devise之类的错误,或者我是否错过了非常基本的东西(最有可能!?)。任何建议都将非常感谢。
更多信息 - 会议的佣金路线如下: api_sessions POST /api/sessions(.:format)api / sessions #create {:format =>:json}
api_session DELETE /api/sessions/:id(.:format)api / sessions #stroy {:format =>:json}
不确定它是否有用,但与用户(资源)的重写Devise控制器相关的路由如下:
用户GET /users(.:format)用户#index POST /users(.:format)用户#create new_user GET /users/new(.:format)用户#new edit_user GET /users/:id/edit(.:format)用户#edit 用户GET /users/:id(.:format)用户#show PATCH /users/:id(.:format)用户#update PUT /users/:id(.:format)用户#update 删除/users/:id(.:format)用户#stroy