2010-11-01 4 views
0

Lorsque vous utilisez une API Restful d'autres applications Web, utilisez-vous généralement une bibliothèque wrapper ou utilisez-vous directement l'API Restful avec un client HTTP?Comment utilisez-vous les API Restful?

Répondre

2

C'est une question difficile à répondre, principalement parce que dans l'état actuel de l'industrie, la bonne réponse est très peu pratique.

La réponse correcte, à mon avis, est que vous ne devriez pas utiliser une API wrapper. L'interface uniforme est HTTP et cela devrait être le modèle de programmation sur lequel le client travaille. Cela dit, il n'y a rien de mal à avoir des classes auxiliaires qui analysent les types de média pour générer des versions fortement typées. Quelque chose comme ça,

var response = HttpClient.Get(linkTofoo); 
if (response.ContentType =='application/foo') { 
    var strongFoo = FooHelper.Parse(fooResponse); 
    HandleFoo(strongFoo); 
} 

Malheureusement, une grande majorité des APIs qui prétendent être RESTful, ne sont pas. Ils ne respectent pas les contraintes d'auto-description et d'hypermédia et rendent donc très difficile l'interaction avec eux de manière RESTful. Ils nécessitent que vous effectuiez la construction d'URI côté client et ayez une connaissance préalable des types qui seront renvoyés par les terminaux. La triste réalité est qu'avec de nombreuses API, vous n'avez pas d'autre choix que d'utiliser une bibliothèque de proxy client fournie. Cela ne devrait pas être le cas.

Si vous recherchez une bibliothèque client, assurez-vous qu'elle est sans état. La bibliothèque cliente ne doit pas commencer à gérer les durées de vie des objets retournés. La mise en cache Http fait cela, donc à moins que ce soit une bibliothèque uber-smart qui peut invalider les références d'objet lorsque la représentation mise en cache expire, évitez les bibliothèques client avec état.

e.g. 

var foo = remotelibrary.GetFoo(233); 
var bar = foo.bar; // If this causes an HTTP request 
var barcopy2 = foo.bar // and this doesn't because it already has a reference to bar 
         // I would be very leary of using this library 
+0

Je dirais qu'il est correct d'écrire/utiliser des bibliothèques écrites pour des applications hypertextes spécifiques, par exemple. AtomPub – Mike

+0

@Mike Oui, si la bibliothèque est écrite pour un protocole spécifique qui est en couches sur HTTP, il est probable qu'elle utilise HTTP correctement sous les couvertures, donc vous devriez être en sécurité. –

1

Il va presque certainement être préférable à long terme d'utiliser une bibliothèque. Cela vous permet d'abstraire le repos de la conception et d'ignorer l'ensemble de l'activité HTTP.

S'il n'y a pas de bibliothèque existante pour l'API que vous utilisez, vous devriez envisager d'écrire la vôtre.

Questions connexes