【问题标题】:Is C# WebAPI worth it? Can I use standart MVC4 to create my API?C# WebAPI 值得吗?我可以使用标准 MVC 4 来创建我的 API 吗?
【发布时间】:2013-06-29 22:18:39
【问题描述】:

我需要构建一个庞大的 API,并且我正在尝试使用 WebAPI 而不是默认的 MVC4 项目,但这似乎只会让事情变得更加困难。

  • 控制器 Get, Post, Put, Delete 中只能有 4 个方法,如果我想要更多,我需要修改该特定方法的路由
  • FluentValidation 不适用于 WebAPI,因此我需要使用我真的不想使用的 DataAnnotations。
  • 不能使用dynamic返回数据类型

我的问题是:如果我使用 MVC4 项目并使用返回 Json 的默认 ActionResults 真的会那么糟糕吗?使用 WebAPI 的真正优势是什么,如果您可以轻松地将项目转换为 API,为什么他们甚至首先制作它们?

【问题讨论】:

  • 我们设法将 FluentValidation 集成到 WebApi 中。我们所要做的就是实现一个自定义的 ModelValidatorProvider。有关更多详细信息,请参阅此 SO:stackoverflow.com/questions/12975291/…。对于“动态”数据类型,我不明白您为什么要向客户端返回 dynamic。您的意思是匿名对象吗?
  • 如果您只关心 JSON,那么您可以从 Web API 控制器返回一个动态对象。 (XML序列化器不支持动态。)对于路由,您可以使用基于动作的路由(在路由模板中放置“{action}”,或者使用基于属性的路由。

标签: c# asp.net-mvc asp.net-mvc-4 asp.net-web-api


【解决方案1】:

您绝对应该尝试一下NancyFx(ASP.NET Web API 类似于 REST 框架,但轻量级)。然后你可以有这样的方法:

public class SampleModule : Nancy.NancyModule
{
    public SampleModule()
    {
        Get["/"] = _ => "Hello World!";
    }
}

【讨论】:

  • 这对 API 来说太棒了。我会用这个。非常感谢。
  • 感谢 Nancy 开发人员,他们太棒了!
【解决方案2】:

你可以,但你不应该使用 JsonResult。 Web Api 是一个天才的概念。 Web APi 使 REST 变得更简单。对于每个实体,您都可以创建新的 ApiController 并通过它管理 CRUD 操作。这里有几点。

  1. 您提到我们只能使用 Get、Post、Put、Delete 以外的操作,这是不正确的。我使用了以下操作。

    public bool post()
    {
       return true;
    }
    
    [HttpPost]
    public bool validate(int id)
    {
       return input == 0;
    }
    

所以在上面的代码中,如果你使用 /cntrName 进行 post 操作,则会调用 post 方法,如果你使用 /cntrname/validate/4 进行 post 操作,则会调用 validate。这意味着您可以对多个请求使用函数重载。

2。 我经常使用 angularJS,Web Api 帮助很大。您必须为每个 Angular 控制器声明 1 个 url,每个请求看起来都一样,但会进行适当的调用。 3. 增加复用性。示例

[HttpPost]
public JsonResult post()
{
    return Json("output",JsonRequestBehavior.AllowGet);
}

public string post()
{
    return "output";
}

现在如果您想在不同的控制器中使用上述方法,使用 MVC 您必须执行以下操作

(string) post().Data //get returned data from JsonResult and convert to string.
Web Api is just returning string
  1. Web API 是执行 ajax 请求的逻辑抽象。当然你可以使用 MVC(如果你愿意,你也可以使用 WebForms)。但是 Web api 是编写 CRUD-REST 应用程序的更好方法。

【讨论】:

    【解决方案3】:

    如果您对 IIS 作为主机感到满意,并且只想返回 JSON 和 HTML,并且您已经熟悉 ASP.NET MVC,那么我建议您坚持下去。

    只有当您想要更灵活地使用媒体类型、更多主机选项和更直接地控制 HTTP 标头时,WebAPI 才真正开始显示其优势。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-28
      • 1970-01-01
      • 1970-01-01
      • 2015-08-10
      • 2015-11-23
      • 2012-10-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多