1

私の将来のあるプロジェクトのために私が持っている次の計画についてアドバイスを求めています。

  • 大きな絵
    • Webサイトからデータベースにクエリ(読み取り/書き込み)してその結果を表示するモバイルクライアント(iOS、Android、Windows Phoneなど)を作成したいと思います。
    • プラス他のいくつかの機能...

クライアントからデータベースに直接アクセスする(Webサーバーをバイパスする)ことは、特にインターネット上では悪い考えであることを私は知っています。私はほとんどの共有ウェブホスティングプランがとにかくこれを禁止していると思います。だからここに私の意図した解決策があります...

  1. モバイルクライアントは、API呼び出しを介してデータをWebサーバーに送信します。
  2. WebサーバーはRESTAPI呼び出しを処理し、データベースにクエリを実行します。Webサーバーは、モバイルクライアントとデータベースサーバー間のミドルウェアとして機能します。
  3. Webサーバーは、DBクエリから結果を受け取り、それらをモバイルクライアントに渡します。
  4. モバイルクライアントは、クライアント側でデータを表示/操作します。

APIの使用経験は、Twitter、Instagram、およびGoogleショッピングAPIの使用に限定されています。私の経験から、モバイルとWebサーバー間でJSON形式でデータを転送するのが最善のようです。

さて、ここに私の懸念があります...

  1. ログインしたユーザーのみがAPIを使用できるようにするにはどうすればよいですか?OAuthは解決策ですか?
  2. REST APIの場合、RESTfulの方が良いですか?

ウェブサイトの現在の環境はPHPとMySQLとの共有ホスティングですが、将来的にはクラウドベースのサービスに移行することを考えています。CodeIgniterまたはCakePHPまたはApifyのいずれかを使用してミドルウェアを実装することを計画しています。

誰かが私の計画を上記で批評したり、私の頭の中にあるものよりも優れた代替案を提示したりしていただければ幸いです。

前もって感謝します。

4

1 に答える 1

3

RESTは、おそらくあなたが探しているものに最適なアーキテクチャです。RESTfulを取得すればするほど、より良い結果が得られます。

OAuthは認証プロトコルであり、資格情報を使用するための認証を持つWebサイトを処理します。承認は認証とは異なりますが、認証を確実にするために別の当事者からの承認を使用できます。

OAuthの選択は、構築しているサービスによって異なります。たとえば、アプリケーションがTwitterに基づいている場合、認証にTwitterOAuthを使用するのは理にかなっています。

サービスが独自の資格情報を提供し、すべてのユーザーが独自のユーザー名/パスワードを保存している場合、OAuthはおそらく最良の選択ではありません。このシナリオでは、OAuthクライアントとOAuthサーバーをセットアップする必要がありますが、これは必要ありません。

独自の認証には、HTTPダイジェスト認証が適しています。実装は簡単で、多くのライブラリがすでにサポートしており、ほとんどの場合、十分に安全です。


PHPでのセッションとCookieは避けてください。RESTはステートレスであり、これらの機能はサーバー上のクライアント状態でいっぱいです。

ある日、サービスをより多くのサーバーに拡張する必要がある場合、サーバー間のセッションの同期は面倒です。

Expires、、などのキャッシュヘッダーに注意してETagくださいLast-Modified。これらはAPIの全体的なパフォーマンスを向上させ、キャッシュできるリバースプロキシ(サーバーとクライアント間のミドルウェア)をセットアップできます。

APIの公開データは認証を必要としないはずです。認証されたデータをキャッシュする場合、このキャッシュを異なるユーザー間で共有することはできません。パブリックデータキャッシュは共有できます。

JSONとXMLはどちらも、処理と操作が簡単です。JSONの方が優れている場合もあれば、XMLの方が優れている場合もあります。これらの形式の違いの詳細については、この回答を参照してください。

Respect \ RestVarnish、Frapiをご覧ください。これらはRESTAPIに最適なツールです。

于 2012-06-05T18:47:17.627 に答える