首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails API呈现camelCase中的所有响应

Rails API呈现camelCase中的所有响应
EN

Stack Overflow用户
提问于 2019-03-17 18:32:51
回答 2查看 1.1K关注 0票数 0

我试图让Rails API在camelCase中呈现所有JSON响应。目前,我正在使用作为序列化程序,并呈现如下错误:

代码语言:javascript
复制
render json: { errors: command.errors }, status: :unauthorized

对于Netflix序列化程序,我一直在每个序列化程序中添加set_key_transform :camel_lower,这似乎很有用(尽管如果有人知道如何将其作为默认设置,我们将不胜感激)。

然而,对于渲染错误,我不确定骆驼套管的最佳方法。如果有人在这方面有任何经验,请让我知道你是怎么做的!理想情况下,有一种方法可以不为所进行的每个呈现调用添加太多的语法。

更新

在序列化错误时,我在应用程序控制器上添加了一个助手方法:

代码语言:javascript
复制
def render_error(errors_params, status)
  render json: {
    errors: errors_params
  }.deep_transform_keys { |key| key.to_s.camelize(:lower) }, status: status
end

对于,我采纳了@spickermann的建议,并为其他要继承的序列化程序添加了一个应用程序序列化程序:

代码语言:javascript
复制
class ApplicationSerializer
  include FastJsonapi::ObjectSerializer
  set_key_transform :camel_lower
end
代码语言:javascript
复制
class SomeSerializer < ApplicationSerializer
  attributes :attribute, :other_attribute
end
EN

回答 2

Stack Overflow用户

发布于 2019-03-17 19:12:24

您可以创建一个ApplicationSerializer,所有其他序列化程序都可以继承它:

代码语言:javascript
复制
class ApplicationSerializer
  include FastJsonapi::ObjectSerializer
  set_key_transform :camel_lower
end

class FooBarSerializer < ApplicationSerializer
  attributes :buzz, :fizz 
  # ...
end
票数 4
EN

Stack Overflow用户

发布于 2019-03-17 19:15:00

您可以对序列化程序进行猴子修补。

代码语言:javascript
复制
Rails.application.config.to_prepare do
  FastJsonapi::ObjectSerializer.class_eval do
    set_key_transform :camel_lower
  end
end

对于处理错误,您可以创建一个错误序列化程序。

代码语言:javascript
复制
render serializer: ErrorSerializer, json: {status: : unauthorized, errors: resource.errors 

看看这里这里

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55210512

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档