2017-01-08 3 views
0

私は、Springブートを使用して、Androidアプリケーション用の簡単な登録/ログインシステムを構築しようとしています。私はテーブルid,,パスワードを含む仮想マシンにMySQLデータベースを持っています。 Springブートアプリケーションには、以下のクラスが含まれています。 Account(エンティティ)、AccountRepository(リポジトリ)、AppConfig(構成クラス)およびApplication(メインクラス)です。私のエンドポイントは/accountsです。現在登録されているアカウントを確認したい場合は、データベースのJSON表現についてはhttp://<ip address>:8080/accountsに行ってください。URLのID以外の属性を使用してオブジェクトを参照する

ユーザーがアカウントを登録しようとすると、ユーザー名が既に登録されているかどうかを確認するようにAndroidプログラムを変更したいと考えています。問題は、ウェブリポジトリのユーザー名を参照できないことです。アカウントID(例:http://<ip address>:8080/accounts/2)を使用する必要があります。

IDではなくユーザー名を直接参照できるようにSpringブートアプリケーションを変更する方法はありますか?だから、私のAndroidアプリを各データベースのエントリにループさせるのではなく、http://<ip address>:8080/accounts/johnstone01のようなURLにリクエストを送信して、どのようなレスポンスが得られるかを調べることができます(レスポンスが200の場合、ユーザー名が既に存在することがわかります)別のユーザー名を選択してください)。

アドバイスをいただきありがとうございます。

答えて

0

アカウントを作成してユーザー名を確認するためのPOSTリクエストhttp://<ip address>:8080/accountsを作成することをお勧めします。制約を使用したMySQLレベルのチェックかもしれません。

は、ユーザー名の存在の別のチェックのためとして、私は、クエリパラメータ「ユーザ名」を追加することにより、GETリクエストを修正することをお勧め:1つのレコードのみを持つ配列を返しますか、そのような場合は、空の配列を返します。この場合の応答で

http://<ip address>:8080/accounts?username=johnstone01 

ユーザー名は存在しません。

0

ご使用のサーバー用にREST APIを作成しているとのことで、この場合、POSTリクエストを受け入れるエンドポイント(POST http://:8080/accountsのアカウントにはユーザー情報が含まれます)を作成するのが正しい方法です。

誰かが新しいアカウントを登録しようとすると、新しいアカウントを作成するための情報を定義したエンドポイントにPOSTリクエストを送信します。残りはすべてあなたのサービス層で起こります。それはあなたが持っていないようだ、それは小さなプロジェクトのために大丈夫です、私はサービスコードがあなたのコントローラにあると思います。これはエンティティが永続化できるかどうかを確認する責任がコントローラにあることを意味します。

リポジトリには、パラメータとしてユーザ名を受け入れ、そのユーザ名またはnullのエントリを返すメソッドを追加するだけです。この方法でコントローラが要求することができます。nullの場合、新しいエンティティを保持し、HTTPコード200を返します。そうでなければ、409の衝突コードを返す必要があります。

あなたのアプリは何が起こったのかを知るために戻りコードをチェックするだけです。

関連する問題