MVC 中的 Web API 和 REST API 到底有啥区别?

Posted

技术标签:

【中文标题】MVC 中的 Web API 和 REST API 到底有啥区别?【英文标题】:What exactly is the difference between Web API and REST API in MVC?MVC 中的 Web API 和 REST API 到底有什么区别? 【发布时间】:2015-04-26 12:09:42 【问题描述】:

我对 REST API 有一点了解。据我所知,它用于处理 HTTP 服务(GET、POST、PUT、DELETE)。

当我添加一个 Web API 控制器时,它为我提供了一些基本方法,例如:

 public class Default1Controller : ApiController
    
        // GET api/default1
        public IEnumerable<string> Get()
        
            return new string[]  "value1", "value2" ;
        

        // GET api/default1/5
        public string Get(int id)
        
            return "value";
        

        // POST api/default1
        public void Post([FromBody]string value)
        
        

        // PUT api/default1/5
        public void Put(int id, [FromBody]string value)
        
        

        // DELETE api/default1/5
        public void Delete(int id)
        
        
    

所以我的问题是:Web API 和 REST API 有什么区别?

根据 REST 的定义,上面的代码是基于 REST 的,那么 MVC 中的普通 Web API 是什么?有人说您使用带有 REST 的 Web API,我有点困惑?

请提供对它们的更好理解。

【问题讨论】:

Web API 只是实现 REST 的一种方式... 【参考方案1】:

我去过那里,就像我们许多人一样。有很多令人困惑的词,如 Web API、REST、RESTful、HTTP、SOAP、WCF、Web 服务……以及围绕这个主题的更多词。但我将仅对您提出的问题进行简要说明。

休息

它既不是 API 也不是框架。这只是一个建筑概念。你可以在here找到更多细节或教程https://restfulapi.net/

RESTful

我在任何地方都没有遇到过任何正式的 RESTful 定义。我认为 API 是否符合 REST specifications 只是另一个流行词。

编辑:还有另一个趋势开源计划 OpenAPI Specification (OAS)(以前称为 Swagger)来标准化 REST API。

网络 API

它在一个用于编写 HTTP API 的开源框架中。这些 API 可以是 RESTful 的,也可以不是。我们编写的大多数 HTTP API 都不是 RESTful。该框架实现了 HTTP 协议规范,因此您会听到诸如 URI、请求/响应标头、缓存、版本控制、各种内容类型(格式)之类的术语。

注意:我没有故意使用 Web 服务这个术语,因为它是一个容易混淆的术语。有些人将此作为一个通用概念,我更喜欢称它们为 HTTP API。微软有一个名为“Web Services”的实际框架,例如 Web API。然而,它实现了另一个称为 SOAP 的协议。

【讨论】:

【参考方案2】:

ASP.NET Web API 是一个框架,可让您轻松构建可访问各种客户端(包括浏览器和移动设备)的 HTTP 服务。 ASP.NET Web API 是在 .NET Framework 上构建 RESTful 应用程序的理想平台。

休息

REST 的最佳点是当您通过 Internet 公开一个公共 API 来处理数据的 CRUD 操作时。 REST 专注于通过单一一致的接口访问命名资源。

SOAP

SOAP 带来了它自己的协议,并专注于将应用程序逻辑(而不是数据)作为服务公开。 SOAP 公开操作。 SOAP 专注于访问命名操作,每个操作通过不同的接口实现一些业务逻辑。

尽管 SOAP 通常被称为“Web 服务”,但这是用词不当。 SOAP 与 Web 几乎没有任何关系。 REST 提供基于 URI 和 HTTP 的真正“Web 服务”。

参考:http://spf13.com/post/soap-vs-rest

最后: 他们可能指的是 REST 与 RPC 看到这个: http://encosia.com/rest-vs-rpc-in-asp-net-web-api-who-cares-it-does-both/

【讨论】:

请理解我的问题。我想要与 web api 控制器不同的 w.r.t。 我认为您不了解 REST 的真正含义。 ASP.NET 不适合制作 REST 应用程序。 ASP.NET WebAPI 非常棒,非常适合创建 API,但在这种情况下不应该使用 REST 这个词。您可以使用 ASP.NET 制作 REST API,但这很困难并且不是目标驱动的(请参阅roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven) 这是 rpc 与面向资源的 api 之间差异的一个惊人答案。 Soap apis 也可以宁静

以上是关于MVC 中的 Web API 和 REST API 到底有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

远程 API/Web 服务层 MVC 的域逻辑和数据访问

同时对 Asp.Net core 2.0 MVC 应用程序 (cookie) 和 REST API (JWT) 进行身份验证

ASP.NET MVC C# PayPal Rest API - UNAUTHORIZED_PAYMENT

Web APi Vs MVC 和在 ASP.net 核心 Web APi 中提供静态文件

使用 rest api 从 Web 应用程序将文件上传到 Azure 文件存储

如何在 Asp.net MVC 中编写 OAuth2 Web API 客户端