2012-03-12 9 views
3

私は現在、私のRailsバックエンド用のAndroidアプリを開発中です。RESTful RAILSとAndroid HttpRequests

ユーザーがHttpPostを使用してAndroidからログインし、そのトークンをRailsユーザーテーブルとAndroid共有設定の両方に保存するときに、api_tokens_controllerを作成してapi_tokenを作成しました。私はこれを確認することができました。

私はのparamsとしてapi_tokenを送信しようとしています:最初のログイン後に後続のすべての要求と私のAndroidアプリからとRailsを確認している[api_token]:User.rbで

def self.authenticate_with_api_token(api_token_from_mobile) 
    user = find_by_api_token(api_token_from_mobile) 
    if user.nil? 
     return nil 
    else 
    return user 
    end 
end 

をユーザーが存在する場合は、他のデータをJSONObjectとして送信します。

ここでは概念的に問題が発生しています。私は今、Androidアプリケーションを ...に移動しようとしています... 3000人のユーザーとHttpGetのユーザーデータをJSONObjectsとして表示します。問題は、Androidアプリからapi_tokenをHttpGetのRailsに送信する方法がわかりません。私はそれがRESTfulなので、私のHttpRequestsはレールのルートが動作する方法に対応しなければならないと仮定しています。

質問:

  1. はのparamsのJSONObjectに送信することが可能です[:api_token] AndroidアプリからレールにHTTPGETで?

  2. 私のHttpRequestsは、Railsが動作するRESTfulな方法に対応する必要がありますか、またはHttpPostだけを使用できますか?

おかげ

答えて

1

私が正しくあなたを理解していれば、その後、あなただけのGETを使用した場合は、URLパラメータとAPIトークンを追加したいので、何かのように:

...:3000/users.json?api_token = token

これは、api_tokenをPOSTデータと同じくparamsハッシュに置きます。 RESTfulな方法は、APIからデータを取得し、POSTを使用してデータを送信する、つまりバックエンドでデータを変更するためにGETを使用することですが、リクエストでユーザーを返す場合は、とにかくGETを使用する正しい方法です。

+0

こんにちはトム、あなたの答えをありがとう。モバイルアプリでは、データ(api_token)を送信し、リクエストごとにデータを受け取る必要があります。私は、ログイン情報を送信するためにHttpPostを使用することができ、apitokenscontrollerの作成アクションの下で、同時にrailsの終わりからapi_tokenを受け取ることができました。私はこのapi_tokenを使ってuserscontrollerに行き、検証のためにそれを送り、1つのリクエストでデータを返すようにしようとしています。私の問題は、http要求(GET、POST、PUTなど)とルート(/ users、users/1など)のタイプによってアクションが決定される場所で、レールルートが動作する方法にあります。 – railslearner

+0

こんにちはトム、私はそれ以上読んできて、あなたの答えはそれかもしれないと思います。 RESTfulなルートがあるため、URLパラメータの事を理解することができません。 HttpPostはURLで何も変更せずにparams []を送ることを許可しました。私はHttpGetもそういうものを持っているべきだと思っていました。しかし、私はURLを介してパラメータを送信することができ、私はそれを指定する...:3000/users.json?api_token = token、rails側(UsersControllerのインデックス内)でparams [:api_token]が指定されなければならない期待?ありがとう – railslearner

+0

私はこれが動作することを確認しました – railslearner

0

私は以前のRuby on Rails開発者です。

私はTomに、HTTP GETでパラメータとしてapi_tokenを渡すことができることに同意します。

あなたの2番目の質問では、RESTfulな方法は、APIで取ることができるさまざまなアクションのすべてのHTTP動詞を使用することだと思います。 HTTP POSTを使用するようにルートを変更し、追加のパラメータを指定して、作成と更新(PUTをエミュレートする)を区別することができます。しかし、私はそれが将来の道だとは思わない。

しかし、良いニュースは、あなたがAndroidアプリでHttpClientまたはHttpUrlConnectionを使用するかどうかにかかわらず、必要なさまざまなHTTP動詞にアクセスできることです。 HttpClientでは、実際にはHttpGet、HttpPost、HttpPut、HttpDeleteのような異なるクラスで、URLやその他のパラメータを指定して設定します。HttpURLConnectionのために、あなただけのように同じようにそれを呼び出す:

setRequestMethod("PUT"); 

はここHttpUrlConnectionに関連する文書です:

のHttpURLConnectionは、デフォルトでGETメソッドを使用しています。 setDoOutput(true)が呼び出された場合、POSTを使用します。その他のHTTPメソッド(OPTIONS、HEAD、PUT、DELETE、TRACE)は、setRequestMethod(String)とともに使用できます。

+0

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

関連する問題