您好我正在尝试从webAPI更新我的应用程序的客户端。因此,当有人调用web api时,这会调用将数据推送到控制器或javascript以向用户查看View的数据。
我尝试调用方法甚至尝试将POST调用到控制器,但它从未进入控制器方法。我在控制器中有这样简单的方法:
viffile1
我不知道是否有可能像这样刷新客户端,我认为更好的将是我将实施的JS。但我在任何地方都找不到答案。每个人都从Controller调用webApi而不是其他方式。我怎么能做到这一点?
答案 0 :(得分:0)
需要定义路线,而参数内的动作将被识别。
例如:[路线(“api / refresh / {id}”)]
答案 1 :(得分:0)
有一个原因是每个人都从一个mvc控制器调用api。
API的目的是为具有请求此类操作所需权限的任何内容提供数据或执行某些数据操作。就是这样。
API并不关心它是由MVC应用程序,移动应用程序或JAVA应用程序或JavaScript前端调用,还是谁知道还有什么。
当然,无论出于何种原因,都可以从主api中调用另一个api。
现在,您必须有一个很好的理由,为什么要从WebApi调用MVC控制器,这基本上与任何正常范例相反。
我们假设您有正当理由。 MVC操作(控制器方法)可以返回视图或数据,就像普通的api一样。您可以返回视图,也可以返回Json数据。事实上,MVC操作可以像WebApi端点一样运行,这意味着它们可以以相同的方式被调用。您只需要确保您的URL正确,因此WebApi通过其正确合格的路径调用您的MVC控制器。
要测试这个,请编写一个简单的MVC操作,它返回一些Json数据并在浏览器中调用它。如果您设法正确制作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
现在你需要做的就是从你的web api发出一个get请求(例如使用HttpClient)到这个url,你将获得数据。然后你可以决定你想用它做什么。这同样适用于POST方法。
当然,真正重要的问题是为什么你需要从WebApi调用MVC动作,但如果你真的需要这样做,那么它就很简单了。像任何其他api一样对待它。