Rails 路由:json 端点命名约定

Posted

技术标签:

【中文标题】Rails 路由:json 端点命名约定【英文标题】:Rails routes: json endpoint naming convention 【发布时间】:2021-12-24 22:20:54 【问题描述】:

我有一个渲染 json 的端点:

def controller_method
   render json: json_response
end

但是,我对路线的命名约定感到好奇。以下命名导致ActionController::UnknownFormat Controller#controller_method is missing a template for this request format and variant.

get '/controller/controller_method.json', to: 'controller#controller_method'

但是,当路由命名时,我成功获取了 json:

get '/controller/controller_method_data', to: 'controller#controller_method'

我不允许在 url 路由中输入.json 吗?有什么方法可以让.json 成为路线的名称?

【问题讨论】:

【参考方案1】:

有一种更简单的方法来响应不同的格式 - 只需使用 ActionController::MimeResponds

get '/controller/controller_method', to: 'controller#controller_method'
class Controller < ApplicationController
  def controller_method
    respond_to do |format|
      format.json  render json:  hello: 'world'  
      format.html # renders the view implicitly
      format.txt  render plain: 'Hello world'
    end
  end
end

【讨论】:

以上是关于Rails 路由:json 端点命名约定的主要内容,如果未能解决你的问题,请参考以下文章

rails g 脚手架系列名称:字符串 - 这是命名约定错误还是其他原因

JSON 操作的 MVC 命名约定

我对 package.json 中的脚本使用啥命名约定?

自定义 grunt 任务命名约定

REST API 是不是有任何命名约定准则? [关闭]

自定义grunt任务命名约定