编辑:资源和控制器已经多元化,这要归功于评论中写的反馈。但是我的问题仍然存在。
我是Rails的新手,正在尝试在Rails 4中创建REST API。尝试在User
ressource上执行GET请求时遇到路由错误:http://api.localhost:3000/users
没有路线与[GET]“ / users”匹配
但是,当我在终端上执行命令“ rake route”时,我看到有一条/users
路由:
api_users GET /users(.:format) api/users#index {:subdomain=>"api"} POST /users(.:format) api/users#create {:subdomain=>"api"} new_api_user GET /users/new(.:format) api/users#new {:subdomain=>"api"} edit_api_user GET /users/:id/edit(.:format) api/users#edit {:subdomain=>"api"} api_user GET /users/:id(.:format) api/users#show {:subdomain=>"api"} PATCH /users/:id(.:format) api/users#update {:subdomain=>"api"} PUT /users/:id(.:format) api/users#update {:subdomain=>"api"} DELETE /users/:id(.:format) api/users#destroy {:subdomain=>"api"}
这是我route.rb
文件的内容:
Rails.application.routes.draw do
# create rousources in subdomain api
namespace :api, path: '/', constraints: { subdomain: 'api' } do
resources :users
end
end
和users_controller.rb
文件:
module Api
class UsersController < ApplicationController
def index
@users = User.all
render json: users, status: 200
end
end
end
有什么建议吗?
编辑:资源和控制器已经多元化,这要归功于评论中写的反馈。但是我的问题仍然存在。
Railssubdomain
通过从右侧第二个点前面的主机地址中提取一部分来确定URL的名称。在您的示例中,您使用host api.localhost
。Rails将从中解析出一个空的子域。
因此,建议api.my_app.dev
您在hosts
文件中配置一个域。这将使Railsapi
从主机确定正确的子域部分。
完成后,本地服务器可以响应 http://api.my_app.dev:3000/users
顺便提一句。我选择了顶级域dev
,因为如果使用POW之类的工具,则为默认域。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加