C# ASP.NET MVC操作和Javascript需要调用相同的API
我有一个ASP.NET MVC 4应用程序,它需要使用现有的API来提供不同的服务。很明显,ApicController的返回数据和常规控制器的返回视图 我需要某种形式的RESTful API来连接外部API,以实现Javascript功能,但我的操作(呈现视图)也需要调用外部API。简而言之,我的控制器操作和JavaScript调用的API都需要调用公共的外部API 我的问题是:我如何构建它,以便我的操作和JSAPI使用公共接口进行调用 到目前为止,我有两个想法:C# ASP.NET MVC操作和Javascript需要调用相同的API,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,我有一个ASP.NET MVC 4应用程序,它需要使用现有的API来提供不同的服务。很明显,ApicController的返回数据和常规控制器的返回视图 我需要某种形式的RESTful API来连接外部API,以实现Javascript功能,但我的操作(呈现视图)也需要调用外部API。简而言之,我的控制器操作和JavaScript调用的API都需要调用公共的外部API 我的问题是:我如何构建它,以便我的操作和JSAPI使用公共接口进行调用 到目前为止,我有两个想法: 为每个实体创建一个ApiCo
ApiController
。然后,这些ApiController调用外部API。然后,我的Javascipt可以调用这些ApiController,在我的操作中,我可以根据需要创建每个ApiController的一个实例,并调用它们的方法(GET、POST、PUT等)。这听起来像黑客吗这两个词中有一个听起来比另一个更“正确”吗?或者这仅仅是另一种过度担忧和“随心所欲”的情况?这里的目标只是以Javascript和我的控制器操作可以访问的常见方式调用一些外部API。我将创建一个API控制器,作为域和外部web服务之间的桥梁。现在,您的标准MVC控制器和javascript都将使用此API控制器。这里的问题是,您是否可以将此API控制器设置为通用的,这样就不需要为每个实体创建一个API控制器,而是使用相同的API控制器。这将避免重复。当然,这是否可能取决于您的具体情况 我如何构建它,以便我的操作和JSAPI使用公共接口进行调用 我将介绍一个低级的
ApiController
,它完成外部API和返回数据的MVC应用程序之间的所有底层通信。然后在视图控制器中更新操作,以处理通过AJAX访问或不通过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在客户端和服务器端保持一致。您可能可以使用一个定制属性做一些聪明的事情,该属性可以处理响应类型,从而减少所有操作中的代码重复