web-dev-qa-db-fra.com

Quelle est exactement la différence entre Web API et REST API dans MVC?

J'ai un peu de compréhension sur REST. Selon mes connaissances, il est utilisé pour travailler avec des services HTTP (GET POST PUT DELETE).

Lorsque j'ajoute un contrôleur webapi, il me fournit des méthodes de base telles que:

 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)
        {
        }
    }

Ma question est donc la suivante: quelle est la différence entre une API Web et une API REST?

A partir de la définition de repos, le code ci-dessus est REST basé, alors qu'est-ce qu'une API Web normale dans MVC? Je suis un peu confus car certaines personnes disent que vous utilisez une API Web avec REST?

Veuillez fournir une meilleure compréhension des deux.

35
rohit singh

J'y suis allé, comme beaucoup d'entre nous. Il y a tellement de mots déroutants comme API Web, REST, RESTful, HTTP, SOAP, WCF, Web Services ... et beaucoup d'autres autour de ce sujet. Mais je vais expliquer brièvement celles que vous avez posées.

REST

Ce n'est ni une API ni un framework. C'est juste un concept architectural. Vous pouvez trouver plus de détails ici .

Reposant

Je n'ai rencontré aucune définition officielle de RESTful, où que ce soit. Je crois que les API ne sont plus qu'un mot à la mode si elles se conforment aux spécifications REST .

EDIT: Il existe une autre initiative open source très tendance Spécification OpenAPI (OAS) (anciennement Swagger) à normaliser REST Apis.

API Web

Cela dans un framework open source pour écrire des API HTTP. Ces API peuvent être RESTful ou non. La plupart des API HTTP que nous écrivons ne sont pas RESTful. Ce cadre implémente la spécification du protocole HTTP et vous permet donc d'entendre des termes tels que les URI, les en-têtes de requête/réponse, la mise en cache, la gestion des versions, divers types de contenu (formats).

Remarque: je n'ai pas utilisé le terme Services Web délibérément car il s'agit d'un terme source de confusion. Certaines personnes utilisent cela comme un concept générique, j'ai préféré les appeler des API HTTP. Il existe un cadre réel appelé "Web Services" par Microsoft comme Web API. Cependant, il implémente un autre protocole appelé SOAP.

51
Rajiv

L'API Web ASP.NET est une infrastructure qui facilite la création de services HTTP qui atteignent un large éventail de clients, y compris les navigateurs et les appareils mobiles. L'API Web ASP.NET est une plate-forme idéale pour la création d'applications RESTful sur le .NET Framework.

[~ # ~] reste [~ # ~]

Le point fort REST est lorsque vous exposez une API publique sur Internet pour gérer les opérations CRUD sur les données. REST est centré sur l’accès à des ressources nommées via une interface cohérente unique.

[~ # ~] savon [~ # ~]

SOAP apporte son propre protocole et vise à exposer des éléments de logique d’application (et non de données) en tant que services. SOAP expose les opérations.) SOAP est centré sur l'accès aux opérations nommées, chacune implémentant une logique métier via différentes interfaces.

Bien que SOAP soit communément appelé "services Web", il s’agit d’un terme impropre. SOAP n’a pratiquement rien à voir avec le Web. REST fournit de véritables "services Web" basés sur les URI et HTTP.

Référence: http://spf13.com/post/soap-vs-rest

Et enfin: ce à quoi ils pourraient faire référence est REST contre RPC. Voir ceci: http://encosia.com/rest-vs-rpc-in-asp-net- api-web-qui-se soucie-il-le-deux /

8
Chadembox