Bonjour,
Je suis en train de concevoir une application qui devra être piloté par d'autre applications qui serons développés par d'autres développeurs.
Je suis un peu vague, je sais...
Jusque là rien de particulier.
Sauf que je n'ai pas d'expérience dans la conception d'une API pour mes futures clients !
J'ai donc commencé à me documenter sur les BestPractice concernant la conception d'une API et j'ai aussi regardé comment font les autres.
J'ai étudier les API de Google ainsi que leur clients C# !
Exemple avec l'API Task
http://code.google.com/apis/explorer/#_s=tasks&_v=v1
Les namespace en C# de cette API sont :
namespace Google.Apis.Tasks.v1.Data
namespace Google.Apis.Tasks.v1
Je note que le namespace contient la version de l'API.
L'API est décomposé en trois groupes
- Resource
- Request
- Response
Les objets Response se trouvent dans le namespace Google.Apis.Tasks.v1.Data et les deux autres dans Google.Apis.Tasks.v1
Google a fait une forte séparation entre les données et les méthodes.
P.ex. pour créer une tâche dans une liste.
Il faut, 1 - créer la liste
Et l'insérer dans les tasklist.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 var list = new TaskList(); list.Title = SampleListName; list = service.Tasklists.Insert(list);
puis on crée la tâche et on l'ajoute à la liste.
Et la aussi la tâche et la liste sont en paramètres.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 var mytask = new Task { Title = "Test the Tasklist API" }; service.Tasks.Insert(mytask, list.Id).Fetch();
Je suis surpris que la méthode insert(...)n'est pas membre de la classe TaskList.
On a donc des données et un service avec des méthodes qui permet de manipuler ces dites données. Pourquoi cette séparations ?
Est-ce-que c'est la règle lorsque l'on conçoit une API ?
Merci d'avance pour vos feedback.
Au plaisir de vous lire.
Partager