有没有人尝试为 ASP.NET MVC 2 异步操作创建强类型 API?
最好的问候, 阿列克谢·扎哈罗夫
有没有人尝试为 ASP.NET MVC 2 异步操作创建强类型 API?
最好的问候, 阿列克谢·扎哈罗夫
如果我理解正确的话,我相信我们最近做了类似的事情。我们使用了 ASP.NET MVC 2 Futures 库中的 JsonValueProviderFactory 来实现强类型化操作(更多信息请访问haaked.com)。
对于异步操作,我们有类似的东西:
[HandleError]
public class HomeController : AsyncController
{
[HttpPost]
public void IndexAsync(Person person)
{
DoSomething();
}
public ActionResult IndexCompleted()
{
return View();
}
}
public class Person
{
public string Forename { get; set; }
public string Surname { get; set; }
}
并通过以下方式对操作进行 POST:
{"Forename": "Cheesy", "Surname": "Goat"}
有一个很棒的 Firefox 插件可以帮助测试这个称为“REST 客户端”的插件,我也推荐它。
希望这可以帮助。
MVC 可以很好地做到这一点,但我从您提供的代码示例中的理解是您需要一个基于 json 的 API。
Microsoft 正是针对这种情况创建了 WebAPI,它既是强类型的,并且在其底层设计中遵循 MVC 模式,但它也可以很好地工作,并且可以在同一个 Web 应用程序中与 MVC 一起使用。
然而:
如果您愿意,您可以使用简单的 Json 序列化程序包从 MVC 控制器操作提供序列化对象并简单地返回结果字符串,ActionResult 也支持这种情况,并且对于帖子使用内置的元数据基础设施来验证您的类型特定数据发布给您所需的类型安全性。
将 MVC 控制器视为一个 REST 端点也是可能的,只需以正确的方式构造控制器以支持典型的 REST 调用。
但是,我强烈建议为此使用 WebAPI,因为它更适合 API 场景。