0

Rails 3 を使用してサービスを作成しています。サービスは主にいくつかの API メソッドを提供しますが、使いやすいインターフェイスを備えたエンドユーザー向けの特別な Web ページもいくつかあります。これらの Web ページは基本的に API の「カバー」です。

だから私がする必要があるのは、少しコーディングしてCoverControllerから API メソッド (別のコントローラー) にリダイレクトすることです。POSTこのメソッドは、エンドユーザーに表示されてはならない重要な情報 (アクセス トークンなど) が含まれているため、経由で呼び出す必要があります。

HTTP 標準を理解しているので、経由POSTでリダイレクトすることはできませんが、呼び出す必要があるメソッドは隣接するクラスの別の関数です! ブラウザから呼び出されたparamsのように、すべて (など) を適切に設定して呼び出す方法はありますか? それとも、自分自身を使用して呼び出す必要がありますか?Net::HTTP::Post

4

2 に答える 2

0

私はあなたが間違った方法を考えていると思います。Rails 3 は非常に優れているため、アクションを呼び出すことができ、結果はアクションの呼び出し方法に基づいています。

小さな例: 現在の時刻を返す API:

def gettime
  @time = new Date
  # and do all other important stuff
  respond_to do |format|
    format.json { render json:  @time }
    format.html { render 'gettime' } # renders gettime.html.erb
  end
end

API として呼び出された場合は、json オブジェクトを返します。ブラウザから呼び出された場合は、html ページを返します。このようにして、コードを複製せず、アクションがユーザーによって開始されるか、別のアクションの後にリダイレクトされるという規則に従います。

また、他の開発者もあなたのコードを理解し、それが属する場所に正確に配置されます。

ところで:投稿を使用して適切なパラメータを「隠す」ことはできません。どのブラウザでも、この情報は 1 つのショートカットで表示されます。

于 2013-01-11T15:02:10.753 に答える
0

メソッドを呼び出すことができます: # コントローラーで

# action 1
def action1
  ...
  action2
end

# must be called via post
def action2
  ...
end

これはもちろん、action2 が action1 に渡された既存の params リストを使用できると仮定した場合です。それ以外の場合は、それを埋めることもできます。

于 2013-01-11T13:33:43.983 に答える