Programming Journal

学習したことの整理用です。

gem 'fast_jsonapi'を試してみる

fast_jsonapiとは

Netflixが提供しているgemで、JSONのserializerです。

This project is no longer maintained!!!! ⚠️ってなってるけど使っていいのかな…?

公式に沿って進めていきます。

GitHub - Netflix/fast_jsonapi: No Longer Maintained - A lightning fast JSON:API serializer for Ruby Objects.

serializerとは?

シリアライズ(serialize)とは、プログラミングでオプジェクト化されたデータを、ファイルやストレージに保存したり、ネットワークで送受信したりできるような形に変換することを言います。

逆に、シリアライズされたデータをプログラミングで扱えるようにオブジェクトの型に復元することをデシリアライズ(deserialize)といいます。

だいたいのプログラミング言語にはあらかじめシリアライズの仕組みが用意されています。たとえばRuby では Marshal という独自のクラスが用意されているほか、JSON形式やYAML形式でのシリアライズも簡単に行うことができます。

【用語解説】シリアライズ・デシリアライズとは – Cloud Cafe

Installation

gem 'fast_jsonapi'

bundle install

rails g serializer Article(モデル名) title contents status(カラム名を列挙)

Usage

さっきのコマンドで生成されるserializerのファイルに追記

class ArticleSerializer
  include FastJsonapi::ObjectSerializer

  attributes :title, :contents, :status  # 追記
  belongs_to :user # モデルの設定に合わす
end

コントローラー側で呼び出す 今回は、記事一覧を呼び出してみます。

class ArticlesController < BaseController
      def index
        articles = Article.all
        json_string = ArticleSerializer.new(articles).serialized_json
        render json: json_string
      end
end

json_string = ArticleSerializer.new(articles).serialized_jsonの部分は、一覧の取得でもnewです。
何を思ったか、allに変えてエラーを出しました。。

postmanで見てみる

ちゃんとJSON形式でデータを取得できました

f:id:Study-Diary:20201120190723p:plain
postman