MVC中的Web API和REST API有什么区别?

roh*_*ngh 38 c# api rest model-view-controller asp.net-web-api

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

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

 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)
        {
        }
    }
Run Code Online (Sandbox Code Playgroud)

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

从rest定义开始,上面的代码基于REST,那么MVC中的普通Web API是什么?我有点困惑,因为有些人说你使用REST api的web api吗?

请提供对两者的更好理解.

Raj*_*jiv 58

我和我们这么多人一直在那里.有很多令人困惑的词,比如Web API,REST,RESTful,HTTP,SOAP,WCF,Web Services ......以及围绕这个主题的更多内容.但我将简要解释你所问过的那些.

休息

它既不是API也不是框架.这只是一个建筑概念.你可以在这里找到更多细节.

REST风格

我没有在任何地方遇到RESTful的任何正式定义.我相信它只是API的另一个流行语,可以说它们是否符合REST规范.

编辑:还有另一个趋势开源倡议OpenAPI规范(OAS)(以前称为Swagger)来标准化REST API.

Web API

它在用于编写HTTP API的开源框架中.这些API可以是RESTful也可以不是.我们编写的大多数HTTP API都不是RESTful.该框架实现了HTTP协议规范,因此您可以使用URI,请求/响应头,缓存,版本控制以及各种内容格式等概念.

注意:我没有故意使用术语Web服务,因为它是一个令人困惑的术语.有些人使用它作为通用概念,我更喜欢称它们为HTTP API.微软有一个名为"Web服务"的实际框架,如Web API.但它实现了另一个名为SOAP的协议.


Cha*_*box 10

ASP.NET Web API是一个框架,可以轻松构建可覆盖广泛客户端的HTTP服务,包括浏览器和移动设备.ASP.NET Web API是在.NET Framework上构建RESTful应用程序的理想平台.

休息

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

肥皂

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 /