Hatena::ブログ(Diary)

@camelmasaの開発日記 このページをアンテナに追加 RSSフィード

Githubで活動しています。

2012-08-22

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

| 05:24

昨日の記事に引き続き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/

2012-08-21

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

| 15:12

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/