Google Cloud Endpointsを使用すると、簡単且つセキュアにRest APIのサーバーとクライアントを開発することができます。サーバーはApp Engine、クライアントはWeb(JavaScript)やAndroid、iOSがサポートされています。APIを中心に据えたスケーラブルでクロスプラットフォームなクラウドサービスを開発する際には非常に便利な仕組みです。
しかし、そもそも仕組みが複雑なためか、いろいろとハマりどころが出てきてしまいます。それでも自分で全てを開発する場合に比べ、圧倒的なコストダウンを実現することができますので、是非マスターしたいところです。
私の場合は、以下の点でハマりました。
クライアントIDに指定すべきものはサービスアカウントのIDだった
Androidでいうと、GoogleAccountCredential.usingAudience()に渡すクライアントIDですが、「AndroidアプリのクライアントID」を渡すと認証エラーになってしまいます。ドキュメントに書いてあるのだと思いますが、実際は「サービスアカウント」のクライアントIDを指定する必要があります。
APIメソッドを色々追加したところ、Multiple methods with same rest pathと言われる
初期設定の難関をくぐり抜け、色々APIを追加していくと、そのうち上記のようなエラーに悩まされます。この場合、クライアントライブラリの構築も失敗しているような気がしますが、構築時にはエラーが出ないので、実際に接続しようとした時に気づくことになります。
@ApiMethodのnameだけでは一意にならない場合があるようで、その場合にはpathも指定してやれば解決します。(例:@ApiMethod(name = “updateState”, path = “update_state”))
なんだか面倒な感じです。使い始めたばかりなので理解が足りず何かが間違っているのかもしれませんが、今のところは上記のように回避しています。