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. 8O
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:
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:
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.