0

別のサービスに対して既存の API を使用する必要がある ASP.NET MVC 4 アプリケーションがあります。ApiController がdataを返し、通常の Controller がviewsを返すことは明らかです。

Javascript 機能のために、外部 API に接続するための何らかの形式の RESTful API が必要ですが、(ビューをレンダリングする) アクション外部 API を呼び出す必要があります。つまり、コントローラー アクションJavaScript 呼び出し API の両方が、共通の外部 API を呼び出す必要があります。

私の質問は次のとおりです。私のアクションと JS API が共通のインターフェースで呼び出しを行うようにするには、どうすればこれを設計できますか?

これまでの私の2つのアイデア:

  1. ApiControllerエンティティごとに を作成します。次に、これらの ApiController が外部 API を呼び出します。次に、私の Javascipt はこれらの ApiController を呼び出すことができ、私のアクションで、必要に応じて各 ApiController のインスタンスを作成し、それらのメソッド (GET、POST、PUT など) を呼び出すことができます。
  2. すべてのビジネス ロジックをモデル オブジェクトに入れ、外部 API を呼び出します。特定のメソッドを Javascript に公開するには、いくつかの HTTP エンドポイントを提供し、Javascript が呼び出すアクションの名前を渡します。これにより、Model メソッドが呼び出され、次に外部 API が呼び出されます。

これらのどちらかが他方よりも「正しく」聞こえますか? それとも、これは心配しすぎて「やりたいことは何でも」するもう 1 つのケースですか? ここでの目標は、Javascriptコントローラー アクションがアクセスできる一般的な方法で、いくつかの外部 API を呼び出すことです。

4

2 に答える 2

1

ドメインと外部 Web サービスの間のブリッジとして機能する API コントローラーを作成します。これで、標準の MVC コントローラーと JavaScript の両方がこの API コントローラーを使用します。ここでの問題は、エンティティごとに API コントローラーを作成する必要がなく、同じものを使用できるように、この API コントローラーをジェネリックにすることができるかどうかです。それは繰り返しを避けるでしょう。もちろん、これが可能かどうかは、正確なシナリオによって異なります。

于 2012-09-10T13:53:48.643 に答える
0

アクションと JS API が共通のインターフェースで呼び出しを行うようにするにはどうすればよいでしょうか

ApiController外部 API とデータを返す MVC アプリの間のすべての基礎となる通信を行う低レベルを紹介します。次に、View コントローラーでアクションを更新して、AJAX 経由でアクセスされたかどうかにかかわらず、シナリオを処理します。

public ActionResult MyAction(...)
{
    // contact middle-ware controller
    ...
    // handle response
    if (Request.IsAjaxRequest()) {
        return Json(...); // JS specific response
    } else {
        return View() // view specific response
    }
}

これにより、クライアント側とサーバー側の両方で API の一貫性が保たれます。おそらく、すべてのアクションでコードの重複を減らす応答のタイプを処理できるカスタム属性を使用して、何か賢いことを行うことができます。

于 2012-09-10T14:01:52.897 に答える