12

私の会社はAPIを作り直しており、今回はすべてを正しくしたいと考えています;)それがセットアップです...

  • インターネットを介してクライアントにデータを配信しています。
  • クライアントは、iPhone、Android、J2ME、Blackberry などのモバイル ハンドセットです。
  • サーバーは Ruby on Rails でコーディングされています

フレームワークを通じて達成したい...

  • クライアントで ActiveResource を利用します。
  • フレームワークは、モデルの接続 (REST)、解析、および (動的に) 提供を行う必要があります。
  • ライセンスはオープンソースでなければなりません。
  • 認可が含まれるものとする。OAuth を使用しており、すべてのリクエストでアクセス トークンを配信する必要があります。多分パラメータとして、またはHTTPヘッダーで?
  • HTTPS/SSL のサポート
  • ページネーションとリレーションシップ (遅延読み込みあり) のサポートは素晴らしいでしょう! それ以外の場合、フレームワークはこれらに合わせて調整できなければなりません。

私たちはすでに以下のフレームワークを見つけています。たぶん、あなたの誰かがそれらのいくつかを使用したか、別のものを使用しました...


  • Android: Novoda / Carl-Gustaf Harroch の RESTProvider

    • プロバイダーは Android 上のデータ ソースからの抽象化を提供し、RESTProvider は自動的に RESTful API 応答をプロバイダーに解析します。RESTProvider は、Android で Web サービスを処理するときに一般的に再実装されるすべての機能の実装です。ユーザーは、JSON または XML を応答として提供する任意の Web サービス API とシームレスに接続できます。アクティビティで RESTProvider をクエリするには、ユーザーはエンドポイントを指定して API の RESTful 関数をクエリするだけです。RESTProvider は、すべての HTTP クエリとキャッシュも処理します。
    • それ以外のドキュメントはあまり見つかりませんでした
    • キャッシュも提供
    • リリースとドキュメントは 2011 年初頭に予定されています

  • iOS: http://iphoneonrails.com/

    • iOS と Rails 間の通信用ライブラリ
    • RESTful および「ActiveResource」ベース
    • XML/JSON パーサーを含む
    • フリーライセンス
    • ページネーション?、アンドロイド?、遅延読み込み?


  • Android: Spring Android Rest テンプレート モジュール
    • Spring の RestTemplate は、堅牢で人気のある Java ベースの REST クライアントです。Spring Android Rest Template Module は、Android 環境で動作する RestTemplate のバージョンを提供します。


  • Android:フィード フレームワーク
    • com.google.android.feeds
    • コンテンツ プロバイダーの構築に役立つクラスのコレクション。このフレームワークは、アプリケーションを Web API に接続できるように特別に設計されています。
4

3 に答える 3

11

私はRESTProviderの作成者です。まだ非常に初期の段階なので、本番環境での使用はお勧めしません。私は本番環境にあるいくつかのプロジェクトでそれを使用していますが、ほとんどのコードを特定のニーズに適合させました。年末までに公開の安定したAPIを取得しようとしています。

APIの作り直しに関しては、次のことをお勧めします。

  1. GZip圧縮を使用する
  2. キャッシュにETagを使用する
  3. 変更なしで標準を使用する(名前がoauth_tokenからmy_tokenに変更され、ほとんどのライブラリが変更なしで役に立たなくなる場合があります)-OAuth / REST
  4. クライアント側のキャッシュを有効にするには、すべてのオブジェクトに作成/変更されたタイムスタンプとリモートIDを使用します(SQLite競合句):{"myobject":{"createdAt":xxxx、 "rid":"hashvalue"}}4a。ユーザー/アクティビティ/アプリケーションに対して返されるオブジェクトを識別するための良い方法を使用してください:opensocialは「アプリケーションID」+「ユーザーID」+「アクティビティID」を使用します
  5. XMLよりもJSONを優先する
  6. シンプルさを優先する(可能な限り最小の深さ)
  7. そのオブジェクト内の1対多の関係を持つ完全なオブジェクトを返します:{"parent":.... "has":{"IDだけでなく完全なオブジェクト"}}
  8. IDのみを返さないでください( "category":[2,3,4]は "category":[{"name": "testing"、 "id":2}、{"name": "production"、 "id":3}})
  9. 各呼び出しは互いに独立していると考えてください(つまり、ビューにデータを入力するためにhttp://test.com/object.jsonを呼び出すのに十分な情報が必要です)

ドキュメントの場合:1。テストサーバーを提供します2.テスト用のcUrlを提供します3. java / php/rubyなどでサンプルスクリプトを提供します...

今のところ考えられるのはそれだけです。私はより多くの提案が来るので、これに加えて追加するかもしれません。

于 2010-11-05T11:18:40.133 に答える
5

RestKit for iOSをご覧になることをお勧めします

  • リクエスト/レスポンス用のシンプルな API を備えた高性能のスレッド化されたネットワーク レイヤー
  • リモート ペイロードをローカル オブジェクトに宣言的にマッピングするためのオブジェクト マッピング システム (関係を含む)
  • 同期機能を備えたリモート データの高速ローカル キャッシュを提供するための Core Data との統合
  • 一連の JSON ペイロードからシード データベースを生成するためのサポート
  • Ruby on Rails バックエンド (RKRailsRouter) と統合するための特定のサポート
  • Apache ライセンス
  • 多くの優れたアプリ ( Gate Guruなど)の本番環境で使用されています。
于 2011-01-17T21:53:52.197 に答える
1

Spring RestTemplate の選択に追加するだけです。SSL https 呼び出しのリンクは次のとおりです。これが他の人に役立つことを願っています。このソリューションを長い間探していました。

http://www.makeurownrules.com/secure-rest-web-service-mobile-application-android.html

于 2011-12-06T20:33:04.763 に答える