首页 > 解决方案 > Rails API 子集响应

问题描述

我有一个控制器,旨在执行简单的 CRUD 操作。我的数据模型有一个名为start_date. 我应该怎么做才能使我的 API 返回一个 JSON 响应,其中仅包含start_date我可以在请求正文中指定的两个日期之间的值的条目?

标签: ruby-on-rails

解决方案


这更像是一个关于过滤的通用问题,可以应用于任何 API 请求。

如果您GET向端点发出请求,example.com/model则必须传递一些参数,在这种情况下,URL 中有 2 个日期。所以它会是这样的:

example.com/model?start_date=12.12.2017&end_date=15.12.2017

这个例子当然超级简单。您可以通过时间戳或 ISO 格式等不同方式传递这些日期。那取决于你。

在后端,您必须从请求中获取这些参数并对模型执行查询。像这样的东西:

def index
  start_date = params[:start_date]
  end_date = params[:end_date]
  # Make sure to parse the params and transform in a date object
  result = Model.where('start_date < ? AND start_date > ?', end_date, start_date)
  respond_to do |format|
    format.json { render json: result }
  end  
end

推荐阅读