Spree REST API の Content-typeを"application/json"に書き換えるgem、spree_api_content_type_rewriterを作成しました。

昨日の記事に引き続きSpreeネタです。

※昨日の記事。Spree REST API に実装されていない、認証系APIを追加するgem spree_api_authを作成しました。
http://d.hatena.ne.jp/camelmasa/20120821/1345529571


SpreeのREST APIはformatがjsonで出力されますが、Content-typeが"text/html"になってしまっていて、application/jsonを期待するネットワーク系ライブラリでエラーと判断されます。(BODYは正しいjsonだとしても)

なのでそれを書き換える実装をmiddlewareで行っていたのをgem化しました。
https://github.com/camelmasa/spree_api_content_type_rewriter



…しかし、明らかにバグだよなと作ってから思い、issueで質問した所、やはりバグですぐさまbug fixされました。
https://github.com/spree/spree/issues/1866

結果的に良かったのですが、gem化する必要なかったなと後悔。
明らかなbugに関してはissueで確認後実装を行う様にしたいと思います。

メモ

勉強になった部分メモ。
spreeのextensionはgemで提供されるのですが、gem内でconfig.middleware.useを使うときは注意が必要です。

extension内でconfig.middleware.useをしても実行されません。
下記の様にするとmiddlewareを実行する事ができました。

Spree::Core::Engine.middleware.use "SpreeApiContentTypeRewriter::Middleware::ContentTypeRewriter"

ただ、Gemfileに追加するだけで、挙動を変化させるのは混乱の元になると思うので、config.middleware.useするのはアプリケーション側のconfig/application.rbで指定する形の方が良いと思われます。


[PR]Spreeの情報を集めています。

ECを持ちたい方、仕事でECを使いたい方向けのコミュニティサイトです。
このサイトでは世界で最も使用されているECの1つであるSpreeについての情報を提供しています。
http://spreecommerce.jp/

Spree REST API に実装されていない、認証系APIを追加するgem spree_api_authを作成しました。

SpreeはRailsで作成されたECパッケージです。PHPでいうところのECCubeでしょうか。
gemで提供されています。
http://spreecommerce.com/

最近触り始めているのですが、Spreeは各種機能をREST APIという形で提供しています。
しかし、このREST APIにはユーザー登録、ユーザーログインの機能は実装されていません。
(gem spree-apiを使用すると出来なくないのですが、既存のREST APIの挙動を変えてしまいます)

ユーザー登録、ユーザー認証だけが出来ればとりあえずAPIは事足りるので、認証系APIを追加するgemを作成しました。
https://github.com/camelmasa/spree_api_auth

Gemfileに追加してbundle installでAPIが追加されます。

追記

spreeの仕様だと、REST APIを仕様出来るユーザーを管理画面から選択する必要があるのですが、このgemを使うと、ユーザー登録が成功したタイミングでその許可を行います。


[PR]Spreeの情報を集めています。

ECを持ちたい方、仕事でECを使いたい方向けのコミュニティサイトです。
このサイトでは世界で最も使用されているECの1つであるSpreeについての情報を提供しています。
http://spreecommerce.jp/