【发布时间】:2020-11-05 16:19:45
【问题描述】:
我正在使用 Rails 6.0.3.4 开发一个 api。 api base_uri 将是一个子域www.api.example.com,我还打算使用 Headers 进行版本控制。
目前我的路线如下所示:
Rails.application.routes.draw do
namespace :api do
constraints subdomain: 'api' do
resources :books, only: [:index]
end
end
end
我的控制器是创建路由的命名空间:
.
├── api
│ └── books_controller.rb
├── application_controller.rb
└── concerns
book_controllers内的代码:
module Api
class BooksController < ApplicationController
def index
books = Book.all
render json: books
end
end
end
使用上述路由和目录布局,我希望 url http://api.localhost:3000/api/books 返回书籍列表。相反,我收到错误No route matches [GET] "/api/books"。我觉得这很混乱,因为request-based-constraints 的文档几乎逐字使用相同的代码。
请问我错过了什么?
【问题讨论】:
-
你试过this answer吗?更改
config/environments/development.rb后,您必须重新启动 Rails 服务器。 -
@cschroed:感谢您指向该链接。它确实解决了这个问题;仍然需要阅读一些关于如何在生产中处理这个问题。
标签: ruby-on-rails