【问题标题】:How to handle possible params on Rails 4?如何处理 Rails 4 上可能的参数?
【发布时间】:2023-03-27 18:36:01
【问题描述】:

我正在为我的应用做一个 API。

目前,您可以致电api/v1/clients 并按预期取回客户端 JSON。您也可以使用api/v1/clients?client_id=1 并使用id 1 获取客户端对象的JSON 表示。

这是我的API::V1::ClientsController

class API::V1::ClientsController < ApplicationController

  def index
    if params[:client_id]
      @client = Client.find(params[:client_id])
      render template: 'api/v1/clients/show'
    else
      @clients = Client.all
    end
  end

end

我希望,例如,如果您在端点 (api/v1/clients?clent_id=1) 上有拼写错误,应用程序会返回一个带有错误的 JSON 对象:

{
  error: {
    error_code: 10,
    error_description: "Bad endpoint"
  }
}

有没有办法,比如说,在参数上写一个switch 声明来处理可能的情况?

【问题讨论】:

  • “处理参数”不是问题。

标签: ruby-on-rails json api ruby-on-rails-4 params


【解决方案1】:

我的建议:

在你的控制器中创建一个私有方法,这个方法会检查你的params:

  • 如果params 为空,则返回false
  • 如果params 包含'client_id' 并且其值为数字,则返回该值
  • 否则会引发异常。

然后在你的动作方法中你使用这个结果:

  • 如果结果是false,则显示所有结果
  • 否则它会根据您的私有方法返回的 id 显示记录

至于例外:您使用rescue_from 来显示“错误端点”JSON 响应

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多