【发布时间】:2016-02-18 17:38:21
【问题描述】:
我有一个 API 定义接口(合同)
public interface IGuidelineApi : IBaseApi
{
ApiResult Operation(int i, string s, long l);
}
Server Side API 实现原型是这样的:
[Route("api/[controller]")]
public class GuidelineController : IGuidelineApi
{
[HttpGet]
public ApiResult Operation([FromQuery]int i, [FromQuery]string s, [FromQuery]long l)
{
// ApiResult inherits ActionResult
return new ApiResult(new { intVal = i, strVal = s, longVal = l });
}
}
从使用 DispatchProxy 的任何客户端(MVC 客户端应用程序或移动设备)执行任何 API 方法可以通过(API 接口)依赖注入调用它们
private readonly IGuidelineApi _guidelineApi;
public AccountController(IGuidelineApi guidelineApi)
{
_guidelineApi = guidelineApi;
// DispatchProxy magic here!
_guidelineApi.Operation(1, "hello", 617);
}
所以问题是,我是否可以直接将 API 响应传输到 MVC 客户端输出 (IActionResult) 而无需序列化。 尝试替换 - 覆盖实际响应(客户端的 StreamContent)
【问题讨论】:
-
我不太明白你在问什么;但是你为什么要让你的 API 返回一些
ApiResult类型?您可以只返回实际的 (JSON-) 可序列化对象,从而使您的 API 更简单、更兼容,而无需 MVC 样板。 -
嗨,需要一个结果包装器来为终端客户端(Web 客户端或移动应用程序)提供通用类型作为类型安全(我有接口 - API 合同)
-
但是
ApiResult不需要继承自ActionResult。
标签: model-view-controller asp.net-web-api asp.net-core