2

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

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

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

4

3 回答 3

2

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

public class SampleModule : Nancy.NancyModule
{
    public SampleModule()
    {
        Get["/"] = _ => "Hello World!";
    }
}
于 2013-06-30T09:54:17.073 回答
1

你可以,但你不应该使用 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方法会被调用,如果你post/cntrname/validate/4,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 应用程序的更好方法。
于 2013-06-30T03:15:22.200 回答
0

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

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

于 2013-06-30T01:39:58.650 回答