You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在浏览器中请求Rails返回JSON响应并测试GET接口

嗨,我来帮你解决这个问题!要让Rails控制器的GET动作返回JSON响应,同时从浏览器成功请求到它,咱们分两步来操作:

一、让Rails控制器返回JSON响应

你有几种方式可以配置控制器,确保它能输出JSON格式的数据:

  • 直接指定JSON渲染:在控制器的目标动作里,直接用render json: ...方法返回数据,这是最直接的方式,不管请求的格式是什么,都会返回JSON:

    class ModelsController < ApplicationController
      def action
        # 假设你要返回的模型数据
        @model_data = Model.all # 或者根据业务逻辑获取数据
        render json: @model_data
      end
    end
    
  • 按请求格式响应(更灵活):如果你的控制器需要支持多种格式(比如同时返回HTML和JSON),可以用respond_to块来指定JSON格式的处理:

    class ModelsController < ApplicationController
      def action
        @model_data = Model.all
        respond_to do |format|
          format.json { render json: @model_data }
          # 如果需要支持HTML,可以加上 format.html { render :action }
        end
      end
    end
    
  • 路由层面默认JSON:如果这个接口只需要返回JSON,还可以在路由里设置默认格式,这样不用在控制器里额外处理,请求原URL就会返回JSON:

    # config/routes.rb
    get 'models/action', to: 'models#action', defaults: { format: :json }
    
二、从浏览器向Rails请求JSON响应

浏览器端有几种简单的方法来请求JSON格式的响应:

  • URL后缀加.json:这是最快捷的方式,直接在原URL后面加上.json后缀,浏览器访问这个地址就能拿到JSON数据:
    http://localhost:3000/models/action.json

  • 修改请求头(用开发者工具):如果你不想修改URL,可以用浏览器的开发者工具发送带指定请求头的请求:

    1. 打开浏览器的开发者工具(按F12),切换到「Network」面板
    2. 点击「Fetch/XHR」标签,右键选择「Copy → Copy as fetch」(或者新建一个请求)
    3. 修改fetch请求的headers,添加Accept: application/json,然后在控制台执行:
      fetch('http://localhost:3000/models/action', {
        headers: {
          'Accept': 'application/json'
        }
      })
      .then(response => response.json())
      .then(data => console.log('获取到的JSON数据:', data));
      
  • 用浏览器插件辅助:比如使用Postman、Thunder Client这类API测试插件,设置请求方法为GET,填写目标URL,然后在请求头里添加Accept: application/json,或者直接选择响应格式为JSON,发送请求即可。

这样操作下来,你就能在浏览器里测试Rails控制器的GET动作返回的JSON响应啦!

内容的提问来源于stack exchange,提问作者erroric

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:38:09