Railsからキーがキャメルケースのjsonを返す(jbuilder)
Reactでアプリを書いていて思ったことのメモです。
大概jsのオブジェクトのプロパティはキャメルケース(camel case)ですよね。
Railsをサーバサイドにしたのですが、返却されるjsonがスネークケース(snake case)でした。
クライアントサイドで書き換えるのも面倒だと思ったので、調べてみたところRails側で対応するのが楽なようです。
内容
Rails(4から?)はjsonをリクエストした際に返却するオブジェクトの定義を、jbuilderというテンプレートエンジンで行うようです。
生成されている(例: _model.json.jbuilder)ファイルの先頭に
json.key_format! camelize: :lower ...
と記述するとキャメルケースに変更できました。
感想
ちゃんとしたapiを作るならkey_format
も引数で指定できたほうがいいのだろうか?と思いましたが使う気がしないので何もしませんでした。
クライアントからサーバへの送信の際にも書き換えが必要になると思いますが、どうしようかなーと考え中です。
json.key_format!
は単に文字列変換の関数を引数にとり、key
に適応する関数のようです。ここではcamelize: :lower
を渡していますが、他にも色々渡せますね。
この関数はそんなに使い込む機会はないと思いますが、私は関数を引数に取る関数が結構好きです。だからどうしたという話ですが。