3

我在 Ubuntu 12.04 上使用 rails 3.2.8

我正在构建一个仅支持 json 的 Web 服务。现在,如果有人向我发送不是 json 但将 content-type 设置为 application/json 的数据,rails 应用程序会引发异常并返回 500(内部服务器错误)。

在调用控制器操作之前,rails 内发生此异常,因为 rails 正在尝试创建 params 结构并将传入数据解析为 JSON。

我不确定这是正确的行为。如果它挽救了异常并在某些特殊处理程序中或在我的操作中使用某些变量集让我知道,我会更喜欢。我想指出 415(不支持的媒体类型)或 422(不可处理的实体)。我的猜测是 422 在这种情况下更合适。

关于如何实现这一点的任何想法?

4

1 回答 1

1

猜猜您需要稍微更改中间件。要么创建自定义中间件并将其插入到之前ParamsParser,要么覆盖ParamsParser.

看看这个请求,有一个ParamsParser覆盖的样本。

创建自定义中间件还有另一个优点:如果 data 是json但 content-type 不是application/json,您可以在此处修复它(示例)。

于 2013-01-29T10:22:13.830 回答