Я пытаюсь заставить мой Rails API отображать все ответы JSON в camelCase. В настоящее время я использую Netflix Fast JSON API для своего сериализатора и выдаю ошибки, например:
render json: { errors: command.errors }, status: :unauthorized
Для сериализаторов Netflix Fast JSON API я добавляю set_key_transform :camel_lower
к каждому сериализатору, что, кажется, делает свое дело (хотя, если кто-нибудь знает, как сделать это значением по умолчанию, это будет очень полезно).
Однако при ошибках рендеринга я не уверен, что лучше всего использовать верблюжью оболочку. Если у кого-то есть опыт в этом, пожалуйста, дайте мне знать, как вы это делаете! В идеале есть способ сделать это, который не добавляет слишком много синтаксиса к каждому выполняемому вызову рендеринга.
UPDATE
При сериализации ошибок я добавил вспомогательный метод на контроллере приложения:
def render_error(errors_params, status)
render json: {
errors: errors_params
}.deep_transform_keys { |key| key.to_s.camelize(:lower) }, status: status
end
Для Netflix Fast JSON API я воспользовался предложением @spickermann и добавил сериализатор приложения для других сериализаторов, чтобы наследовать от него:
class ApplicationSerializer
include FastJsonapi::ObjectSerializer
set_key_transform :camel_lower
end
class SomeSerializer < ApplicationSerializer
attributes :attribute, :other_attribute
end