0 votes

Comment concevoir une API pour différents utilisateurs et niveaux de contrôle ?

Je suis en train de développer une couche d'abstraction de stockage de valeurs clés, un peu comme JDBC ou ActiveRecord, et j'aimerais fournir différents niveaux d'API, de telle sorte qu'au niveau le plus basique, c'est.. :

get Key
set Key, Value
exists Key
delete Key

Cependant, je souhaite également fournir une autre API qui fournit des détails de niveau inférieur qui peuvent être utilisés avec les datastores du théorème de la PAC tels que :

get Key, Number_of_nodes_to_read_from
set Key, Value, Number_of_nodes_to_write_to
exists Key, Number_of_nodes_to_check
delete Key, Number_of_nodes_to_check, timeout_in_milliseconds

: Et pour rendre les choses vraiment compliquées, j'aimerais aussi une API où des choses à valeur ajoutée peuvent être ajoutées comme les réducteurs de cartes, les index, les enregistrements avec des champs, la recherche.

Quoi qu'il en soit, ma question est de savoir si je dois faire une énorme liste de fonctions ou si je dois diviser l'API, en gardant à l'esprit que je pourrais vouloir ajouter des éléments à l'API à l'avenir.

Gracias

Zubair

Note : La question originale que j'ai posée se trouve ici :

http://stackoverflow.com/questions/2321650/is-this-api-too-simple

1voto

Michael Aaron Safyan Points 45071

En lieu et place d'une longue réponse, je vous recommande vivement de regarder le Techtalk de Google intitulé " Comment concevoir une bonne API et pourquoi c'est important "Je pense qu'il s'agit là d'une réponse à votre question.

Je recommanderais de n'exposer votre API qu'à travers l'interface de carte ou de dictionnaire intégrée fournie par le langage, jusqu'à ce qu'il devienne nécessaire de fournir aux utilisateurs un niveau de contrôle plus élevé. Si vous exposez trop de choses dès le départ, vous vous enfermerez dans votre implémentation particulière, ce qui est totalement contraire à l'objectif d'une API ... qui est de fournir une abstraction.

1voto

Padmarag Points 3489

Pourquoi pas get Key, Map_of_params
Le deuxième paramètre peut être une simple carte de valeurs clés.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X