Rails:将 API 请求限制为 JSON 格式

2024-02-18

我想限制对所有 API 控制器的请求重定向到 JSON 路径。我想使用重定向,因为 URL 也应该根据响应而改变。
一种选择是使用before_filter它将请求重定向到相同的操作,但强制使用 JSON 格式。该示例尚未运行!

# base_controller.rb
class Api::V1::BaseController < InheritedResources::Base
  before_filter :force_response_format
  respond_to :json
  def force_response_format
    redirect_to, params[:format] = :json
  end
end

另一种选择是限制路由设置中的格式。

# routes.rb
MyApp::Application.routes.draw do
  namespace :api, defaults: { format: 'json' } do
    namespace :v1 do
      resources :posts
    end
  end
end

我希望所有请求都以 JSON 请求结束:

http://localhost:3000/api/v1/posts
http://localhost:3000/api/v1/posts.html
http://localhost:3000/api/v1/posts.xml
http://localhost:3000/api/v1/posts.json
...

您会推荐哪种策略?


在路由中设置默认值不会将所有请求转换为 JSON 请求。

您想要的是确保您渲染的任何内容都是 JSON 响应

你在第一个选项中几乎已经有了它,除了你需要这样做

before_filter :set_default_response_format

private
  def set_default_response_format
    request.format = :json
  end

这将在您的 Base API 控制器下进行,这样当它到达您的实际操作时,格式将始终为 JSON。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rails:将 API 请求限制为 JSON 格式 的相关文章

  • 如何在rails中使用npm包?

    我正在尝试使用王牌编辑 https github com ajaxorg ace在我的 Ruby on Rails 应用程序中 大部分视图由 React 组件组成 我正在使用反应轨道宝石 https github com reactjs r
  • 为什么 Rails 5 将“索引”更改为“外键”?

    如果你在 Rails 4 中有这个 t references event index true 现在你可以使用foreign key代替index在 Rails 5 中 我不太明白为什么他们决定这样做 因为功能保持不变 您添加的是索引 而不
  • JSON 解析器从大型 JSON 文件中逐条读取

    我有一个巨大的 JSON 文件 1GB 它基本上是以下格式的对象数组 x y p q x1 y1 p1 q1 我想解析这个文件 这样所有的数据都不会加载到内存中 基本上我想获取例如 数组中的前 1000 个对象进行内存处理 然后将接下来的
  • Web.config 将所有路径重定向到index.php - 不起作用

    我主要使用 Apache 和 htaccess 但我目前正在开发一个托管在 Windows 服务器上的网站 Web config 给我带来了很多问题 我试图将所有 URL 请求重定向到 index php 以便 PHP 脚本可以解析 URL
  • 通过使用 Minitest 的 Rails,如何设置 RuboCop 在每次使用 rake 运行测试时自动运行?

    当我运行以下命令时 我想要RuboCop https github com bbatsov rubocop在测试运行之前检查我指定的应用程序目录 bundle exec rake test 我添加了以下任务lib tasks test ra
  • 使用 JQuery 定义要附加的 HTML 模板

    我有一个正在循环的数组 每次条件成立时 我想附加一份副本HTML下面的代码到具有一些值的容器元素 我可以在哪里放置此 HTML 以以智能方式重复使用 a href class list group item div class image
  • 如何从 API 转换一些原始数据并将其保存到变量中,以便我可以在 C# 中使用它们

    我正在做一个个人项目 它是一个 C 应用程序 使用 API 与一些 Web 服务进行通信 我终于用这几行得到了第一个原始数据 var client new RestClient https api abcd com token var re
  • 转换 JSON-JSON JOLT

    我对 JOLT 还很陌生 我需要将 JSON 文件转换为所需的架构 这是我的输入 PK 12345 FULL NAME Amit Prakash BIRTHDATE 1987 05 25 SEX M EMAIL email protecte
  • Rails:关于产量

    我在a中看到了一些代码导轨 v2 3 app In layout car general html erb 这个视图是由 cars controller 中的方法调用的 我看到了代码 var some car new Object 有两个问
  • Memcachier 达到缓存限制时 Heroku 请求超时

    我使用 Memcachier Dalli 作为客户端 将 Rails 应用程序部署到 Heroku 我正在使用免费插件 提供 25 MB 缓存 我们开始收到来自heroku的请求超时 经过调试 我们发现手动刷新Memcachier解决了问题
  • Ajax JSON 数据和灯箱冲突

    我有一个带有灯箱插件的画廊设置光廊 http sachinchoolur github io lightGallery docs 该画廊与静态 HTML 完美配合 当我动态抓取 API 数据并尝试让灯箱处理这些项目时 问题就出现了 我似乎无
  • 将 JSON 导出到环境变量

    如果我有这样的 JSON hello1 world1 testk testv 我想将每个键值对导出为环境变量 如何通过 shell 脚本来做到这一点 例如 当我在终端上写时 echo hello1 world1应该打印其他键值对吗 注意 上
  • AWS SES模板html部分是多行

    我正在使用 AWS SES 按照文档发送电子邮件https docs aws amazon com ses latest DeveloperGuide send personalized email api html https docs
  • 如何创建与 ActiveResource 对象的 ActiveRecord 关系?

    假设我正在为一家已经拥有 People 应用程序的出版公司编写一个图书馆应用程序 所以在我的图书馆应用程序中我有 class Person lt ActiveResource Base self site http api people m
  • Twitter Bootstrap 中下拉链接的模态

    我正在尝试从下拉菜单中的链接进行模式启动 该模式似乎已启动 网站变为灰色 但看不到 来自不在下拉列表中的常规链接的模态工作得很好 我对 jquery 进行了愚弄 但由于我是 jquery 的新手 所以没有任何结果 这是我的网站代码
  • 在 Rails 中禁用连接池以使用 PgBouncer

    我们有一个 Ruby on Rails 4 2 8 项目 可以访问大型 PostgreSQL 数据库 我们将使用 PgBouncer 添加一个新的连接池服务器 由于 PgBouncer 将处理数据库连接池 我们是否需要关闭 Rails 自动
  • save_and_open_page 已停止提供我的 CSS

    我的测试设置工作得很好 每当我打电话时 都能提供正确格式的 css 页面save and open page从测试中 然后 我设置了一些 javascript 测试 并对我的设置进行了一些更改 抱歉 我无法详细说明所有内容 我没有足够详细地
  • 使用本地存储在从另一个表保存的 HTML TABLE 中打印 JSON,以便我在另一个页面上打印我的表

    在我的作业中 我必须使用用户输入中的数据并将数据保存在本地存储中 我必须以水平表格式将这些数据从本地存储打印到其他页面 为此 我编写了用于用户输入并将数据保存在本地存储中的代码 div p p div
  • 使用 JSON 参数的 Postgres 批量 INSERT 函数

    这是一个plpgsqlpostgres 的函数9 6 它试图INSERT一行 如果插入没有失败 由于违反键约束 那么它会运行更多命令 CREATE FUNCTION foo int text text RETURNS void AS BEG
  • 如何通过索引访问 JSON 对象中的字段

    我知道这不是最好的方法 但我别无选择 我必须通过索引访问 JSONObject 中的项目 访问对象的标准方法是只写this objectName or this objectName 我还找到了一种获取 json 对象内所有字段的方法 fo

随机推荐

  • 神奇记录迁移失败“找不到源存储的模型”

    我们对 CoreData 模型进行了一些更改 看起来自动迁移失败了 即使我们将当前模型设置为用于生成数据的原始模型 仍然会出现错误 Reason 找不到源商店的模型 2014 09 05 02 19 43 297 948 166846 LB
  • 用户“postgres”的 Docker 密码身份验证失败

    我正在编写一个 docker compose 文件来启动一些服务 但数据库服务是个麻烦制造者 我总是收到此错误 FATAL password authentication failed for user postgres DETAIL Pa
  • 这个错误应该被修复吗?

    昨天我在 Net框架中发现了一个bug 并且发现这是一个已知的bug 不会被修复 简而言之 该错误在于 当将 int 以及可能的其他二进制类型 分配给该字段时 包含 IComparable 类型字段的类无法进行二进制序列化和反序列化 Ser
  • 类型错误:无法从 ndarray 中减去 DatetimeArray

    我的数据框中有两列 开始日期和完成日期 它是时间戳 我想通过找出差异来计算运行时间 当我运行下面的代码时 出现错误 TypeError cannot subtract DatetimeArray from ndarray 我也无法将完成日期
  • 如何撤消 Redux 异步操作? (状态后退多步)

    如果我有一个带有 api 调用的异步操作 它可以是一个操作返回一个函数 export function asyncAction itemId return dispatch gt dispatch requestStarted return
  • 检查数字是否具有相同的符号

    我遇到过这个 检查两个整数是否具有相同符号的最简单方法 https stackoverflow com questions 66882 simplest way to check if two integers have same sign
  • .Net CodeDom - 在 .net 中实现 lambda 表达式

    我想使用 CodeDom 写这样的东西 Where x gt x Id 2 我不知道 CodeDom System CodeDom 中与此等效的是什么 简短回答 CodeDOM 不支持 lambda 长答案 CodeDOM 不支持 lamb
  • 如何使用自定义比较器比较两个数组列表是否相等?

    具体来说 我有两个清单 List
  • 如何以编程方式关闭视频加速

    我在数百台计算机 专用 上运行的程序中使用 Windows Media Player OCX 我发现当视频加速打开到 全 时 在某些计算机上会导致视频无法正确播放 电影之间出现绿色方块等 将加速度设置为 无 一切正常 该程序在大约 800
  • Flutter:构建期间调用 setState() 或 markNeedsBuild()

    我有一个显示视频的页面 但是当我完成视频并弹回到上一页时 我收到以下错误 我的应用程序运行得很好 没有中断 但是下面的错误让我很困扰 构建期间调用 setState 或 markNeedsBuild 是我无法修复的错误 我需要帮助来修复此错
  • ElasticSearch:使用匹配的搜索词标记文档

    我正在使用 elasticsearch 1 7 并且需要一种方法来标记文档与它们匹配的 query string 查询的部分 我一直在尝试突出显示 但发现在某些情况下它会变得有点混乱 我希望用匹配的搜索词标记该文档 这是我正在使用的查询 注
  • 在不启动 PHP 会话的情况下检查 PHP 会话?

    是否可以在不启动会话的情况下检查会话 我问的原因是 我正在开发的应用程序有一个集成的管理界面 因此 当管理员登录时 他们会浏览与用户相同的页面来进行编辑 字段和选项根据用户权限显示 这导致了两个问题 One因为会话正在启动 所以我无法启用浏
  • 当我将铃声模式设置为 RINGER_MODE_SILENT 时,手机仍然振动,并且菜单中的图标设置为“振动”图标

    当我执行这段代码时 mAudioManager setRingerMode AudioManager RINGER MODE SILENT 我顶部菜单栏中的图标设置为振动图标 并且振动设置设置为振动而不是静音 我对 静音 的期望是没有振动
  • Electron 是针对不同的 Node.js 版本编译的

    我正在构建一个预计在 Ubuntu 20 xx Linux 和 Raspberry Pi 运行 Raspbian 和 arch armv7l 上运行的 Electron 应用程序 但收到以下错误 was compiled against a
  • 如何触发gitlab中的特定作业

    我想在管道中运行特定的作业 我认为为该作业分配一个标签 然后在 post 方法中再次指定该标签将满足我的需求 问题是当我使用 api post 触发时 所有作业尽管只有其中一个已标记 但管道中会触发事件 gitlab ci yml 工作1
  • Android TextView 去除顶部和底部空间的方法

    当我包括以下内容时XML to layout文件 我可以看到下图 如果你看到它 你就会意识到TextView有顶部和底部空间
  • 适用于 Visual Studio 2008 的 Windows CE SDK

    我是 Windows CE 编程新手 我有 Visual Studio 2008 和 Visual Studio 2005 我找到了以下适用于 Windows Mobile 的 SDK 请帮助我确定这是否是正确的 或者请随时将我重定向到正确
  • spring Resttemplate url 编码

    我尝试使用 springs Resttemplate 进行简单的休息调用 private void doLogout String endpointUrl String sessionId template getForObject htt
  • 十进制数、to_char 和 Oracle

    我试图找出 to char 的格式规范 它会给我以下结果 to char 0 1 FORMAT SPEC 给出 0 1 并且 to char 1 FORMAT SPEC gives 1 我尝试过以下解决方案 to char 0 1 给出 1
  • Rails:将 API 请求限制为 JSON 格式

    我想限制对所有 API 控制器的请求重定向到 JSON 路径 我想使用重定向 因为 URL 也应该根据响应而改变 一种选择是使用before filter它将请求重定向到相同的操作 但强制使用 JSON 格式 该示例尚未运行 base co