2017-12-11 15 views
0

こんにちは、私はwebAPIから自分のアプリケーションのクライアント側を更新しようとしています。したがって、誰かがWeb APIを呼び出すと、データをコントローラまたはJavaScriptにプッシュするメソッドが呼び出され、ビューを表示するユーザーにデータが表示されます。Web APIからMVCコントローラメソッドを呼び出す

私はメソッドを呼び出そうとしましたが、コントローラにPOSTを呼び出そうとしましたが、コントローラメソッドには決して行きませんでした。私はいくつかは、私が実装されますどのようなJSとなり、より良いと思いますが、

[HttpPost] 
public ActionResult Refresh(string id) 
{ 
    if (User.Identity.Name == id) return RedirectToAction("Index"); 
    else return null; 
} 

、このようにクライアントを更新することが可能である場合、私は知らない。私はこのようなコントローラで簡単な方法を持っています。しかし私はどこにでも答えを見つけることはできませんでした。誰もがコントローラからwebApiを呼び出していますが、それ以外の方法はありません。どうすればそれを達成できますか?

+1

質問は**です**? –

+0

どのようにWeb APIを呼び出していますか? ajaxを使用して – Saineshwar

答えて

0

パラメータを定義する必要がありますが、パラメータ内のアクションは認識されます。

例:[ルート(「API /リフレッシュ/ {ID}」)]

0

誰もがMVCコントローラからAPIを呼び出す理由があります。

APIの目的は、そのようなアクションを要求するために必要な権限を持つものにデータを提供したり、何らかのデータ操作を行うことです。それでおしまい。

APIは、MVCアプリケーション、モバイルアプリ、JAVAアプリ、またはJavaScriptフロントエンドから呼び出されたかどうか、または他に何がわかっているかは気にしません。

もちろん、何らかの理由でメインAPIから別のAPIを呼び出すことは間違いありません。

WebApiからMVCコントローラを呼び出す理由は、基本的に通常のパラダイムの逆です。

あなたは正当な理由があるとします。 MVCアクション(コントローラメソッド)は、通常のAPIと同様に、ビューまたはデータを返すことができます。ビューを返すことも、Jsonデータを返すこともできます。実際、MVCアクションはWebApiエンドポイントのように振舞うことができ、同じ方法で呼び出すことができます。 URLを正しく取得するだけでよいので、WebApiは適切な資格を持つルートを介してMVCコントローラにコールします。

これをテストするには、いくつかのJsonデータを返す単純なMVCアクションを記述し、ブラウザで呼び出します。 URLを正しく作成すると、ブラウザにデータが表示されます。今度は、同じURLを使用し、ブラウザで行ったのと同じように、完全なURLを使用してWebApiコントローラから同様の要求を出します。あなたはMVCでこのような何かを持っていると仮定すると

public JsonResult DemoCall(int number) 
{ 
    return Json($"{number}", JsonRequestBehavior.AllowGet); 
} 

これは、基本的にはGETのWeb API呼び出しを模倣するが、私はにHomeControllerに、このメソッドを置きます。あなたは、あなたが結果を見るために、ブラウザにこのようなようなものを使用することができる、のは、それは、ポート55712上で動作するとしましょう、ウェブサイトを実行することができます:

http://localhost:55712/home/democall?number=3

ウェブAPIからあなたが今しなければならないすべて、このURLにget要求(例えばHttpClientを使用)を発行すると、データが取得されます。それで、あなたはそれで何をしたいのかを決めることができます。同じことがPOSTメソッドにも当てはまります。

本当に大きな質問は、WebApiからMVCアクションを呼び出す必要があるのはもちろんですが、実際に行う必要がある場合は非常に簡単です。他のAPIと同じように扱います。

+0

私は応答を確認することができなかった場合でもありがとう、私は[AllowAnonymous]メソッドの上にメソッドを呼び出すために追加する必要があったので、応答はログインページでした。または、リクエストにクッキーを追加する他のソリューションはありますか? –

関連する問題