Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Serializers - Retornando o que você quer na API

Serializers - Retornando o que você quer na API

Avatar for Fabricio Bezerra

Fabricio Bezerra

August 05, 2023

Other Decks in Programming

Transcript

  1. Sobre mim • Dev a 5 anos na • Gosto

    de hambúrguer • Main Jamie no Street Fighter 6
  2. Objetivos • Dar um overview mais básico sobre Serializers •

    Não entrar em muitas complexidades para não assustar novatos
  3. O que é um serializer? • Converter nossos dados do

    banco de dados para um JSON legível para o usuário • Filtra os dados que repassamos para o cliente
  4. Por que filtrar os dados? • Muitas vezes o que

    tem no nosso código não é o que queremos passar pro usuário, por exemplo senhas e endereços:
  5. Por que filtrar os dados? • Outras vezes temos um

    monte de atributos que não queremos passar adiante e queremos tirar eles fora
  6. Por que filtrar os dados? • Então temos que mudar

    os dados que recebemos para responder ao nosso usuário:
  7. Maneira mais fácil: criar um hash e dar “.to_json” Pros:

    • Não precisa instalar nada • O módulo JSON já é padrão do ruby Contras: • Fica mais difícil trabalhar com grandes quantidades de dados • Não é bonito
  8. Opções em Ruby • ActiveModelSerializers -> uma das gems mais

    populares, atua com o ActiveModel • jsonapi-rb -> altamente performatica, usa a JSON:API • fast_jsonapi -> serializer focado em velocidade • jsonapi-resources -> focado em tornar o rails compativel com o JSON:API • blueprinter -> criado pelo Procore, feito para ser simples, direto e performático • Alba -> Rápido, fácil e agnóstico, com o adicional de ser capaz de manipulação de erros • O serializer do próprio rails -> Que eu nem sabia que existia
  9. Apesar de termos muitas opções • Todas elas buscam fazer

    as mesmas coisas • Como uma provavelmente se inspirou na outra, métodos básicos são os mesmos
  10. Nosso modelo a ser serializado Algumas gems serializam quase qualquer

    classe, algumas outras nos oferecem uma classe “serializável” como o exemplo abaixo, mas geralmente tentam compatibilizar com os models do Rails
  11. Links, Gems e Guias Gem ActiveModelSerializer - https://github.com/rails-api/active_model_serializers/tree/0-10-stable Guia do

    ActiveModelSerializer - https://github.com/rails-api/active_model_serializers/blob/0-10-stable/docs/README.md Guia do JSONAPI-RB - https://jsonapi-rb.org/ Guia do jsonapi-serializer - https://github.com/jsonapi-serializer/jsonapi-serializer Guia do JSONAPI::Resources - https://jsonapi-resources.com/ Guia do Blueprinter - https://github.com/procore/blueprinter Guia do Alba - https://github.com/okuramasafumi/alba