【问题标题】:Rails Routing: Constraints and NamespaceRails 路由:约束和命名空间
【发布时间】: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


【解决方案1】:

感谢@cschroed 的评论,我能够通过在config/environments/development 中设置config.action_dispatch.tld_length = 0 来解决此问题。

默认值为 1,适用于 prod 环境。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-15
    • 1970-01-01
    • 2011-02-16
    • 2023-03-31
    • 2013-09-25
    相关资源
    最近更新 更多