C#WebAPI值得吗?我可以使用standart MVC4创建我的API吗

本文关键字:MVC4 创建 我的 standart API 可以使 值得 我可以 C#WebAPI | 更新日期: 2023-09-27 18:20:20

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

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

我的问题是:如果我使用MVC4项目并使用返回Json的默认ActionResults,那真的会那么糟糕吗?使用WebAPI的真正优势是什么?如果您可以轻松地将项目转换为API,为什么他们一开始就做出了这些优势?

C#WebAPI值得吗?我可以使用standart MVC4创建我的API吗

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

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

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

  1. 你已经提到,我们不能使用超过Get、Post、Put、Delete的操作,这是不正确的。我使用了以下操作。

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

因此,在上面的代码中,如果使用/ctrName进行post操作,将调用post方法;如果使用/ctname/validate/4进行post,将调用validate。这意味着您可以对多个请求使用函数重载。

2。我经常使用angularJS,WebApi帮了我很大的忙。每个Angular控制器必须声明一个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)。但webapi是编写CRUD-REST应用程序的更好方法

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

只有当您希望在媒体类型上有更大的灵活性、更多的主机选项和对HTTP标头的更直接控制时,WebAPI才真正开始显示其优势。