ハイキング クラブの Web サイト用の Android アプリのビルドを含む新しいプロジェクトがあります。Web サイトにはログイン機能があり、その後、ユーザーは利用可能なハイキングを閲覧したり、ハイキングを購読したり、他の購読者を表示したり、主催者に連絡したりできます。元のサイトは、.asp ページのフロント エンドを持つ MySQL データベースに基づいています。ほとんどのデータは、クエリ文字列の GET パラメータとしてページを介して渡されます。
Android 開発は初めてなので、いくつかのチュートリアルを読んだ後でも、いくつかのことが本当に困惑しています。私はREST Webサービスに基づくアーキテクチャを考えていますが、克服すべきいくつかの障害があり、作成することを選択しています.
REST を使用する以外に、いくつかのオプションを利用できます。
専用の Web サービスを構築する代わりに、アプリから元の .asp ページを呼び出します。これにより、作成するコードが大幅に減り、元のビジネス ロジック (クエリ EA) とログイン システム (Cookie に基づく "remember me" 機能を使用) を使用できます。欠点は、レスポンス内の (X)HTML コードを解析してアプリの GUI に表示する必要があることです。レスポンス コードの大部分は役に立たないバラスト コードです。また、建築家の観点からはあまり気分が良くありません。
SOAP ベースの Web サービスの使用。私は SOAP にまったくなじみがなく、モバイル デバイスには重すぎるようです。
REST サービスの使用。私はこのオプションに傾倒しており、SLIM フレームワークを使用してすでに機能しているサービスをいくつか作成しました。しかし、いくつかの問題があります。まず、REST は定義上ステートレスであり、セッションをサポートしていないようです。ただし、最初のログイン後にアプリに「Remember me」オプションが必要です。ユーザーは、明示的にログアウトしない限り、再度ログインする必要はありません。
しかし、どうすればそれを達成できるでしょうか?
最初のオプションは、ユーザーがログアウトするまで資格情報をローカルに保存する、完全にクライアント サイトのログイン/ログアウト システムを設計することです。そして、私はそれについてよく知りませんが、POST パラメーターとして、または何らかの方法で HTTP Authorization 要求ヘッダーで、各要求と共に資格情報を Web サービスに送信します。
2 番目のオプションは、RESt の原則から少し逸脱し、とにかくセッション メカニズムを使用することです。資格情報を Web サービスに送信した後、Cookie が作成され、クライアント アプリに送信されます。データベースは拡張できないため、ユーザー テーブルにトークンを保存するオプションはありません。おそらく、ユーザー名/パスワードを暗号化して Cookie としてアプリに送信し、その後の各リクエストで復号化できますか?
私はこれに少し迷っています。真剣な提案を楽しみにしています!