2009-09-04 7 views
0

Ceci est une question générale, je ne nommerai donc pas l'API de quel site je me réfère. OK, disons que l'API me donne accès à certains objets (livres/autres produits). Je veux donner à mes utilisateurs la possibilité de "stocker" certains de ces objets dans la base de données de mon application afin qu'ils puissent les "revoir" plus tard.Où placer des données dans une application qui utilise la base de données distante via l'API?

Ma question concerne les verbes "store" et "review". (Bien sûr, la mise en cache sera utilisé si possible au lieu de tirer des données de la db à distance)

1) Que dois-je vraiment magasin

a) juste une clé spécifique à l'API, qui est assez pour tirer les autres données d'objet de l'API lors de l'examen

b) Clé API + autre identifiant unique (comme ISBN pour les livres, ou nom si aucun autre identifiant "naturel" n'existe). Mon idée derrière ceci est que plus tard il me laissera changer l'API utilisée si je dois.

c) Toutes les données de l'objet (comme auteur, fabricant, etc.). C'est-à-dire utiliser l'API uniquement pour afficher les résultats de recherche

2) Si oui à 1 a) ou b), comment organiser le modèle Item? Dois-je

a) séparer l'interface de l'API à une classe séparée (comme RemoteItem) ou devrais-je

b) définir simplement des méthodes à l'intérieur de l'article, qui communiquent de manière transparente avec le site distant?

c) ou un module à inclure?

Répondre

0

1). D'abord une pensée technique: si vous étiez en contrôle de l'API, vous pouvez déterminer le degré de confiance que vous avez dans la logique de la clé spécifique à l'API. Dans ce cas, vous ne le contrôlez pas vraiment, donc je préférerais une approche "ceinture et bretelles", planquer l'ISBN aussi (je ne sais pas si d'autres médias offrent des identifiants uniques similaires). C'est purement une tentative de gérer les changements potentiels dans une API que vous ne contrôlez pas.

Mais pensez à la facilité d'utilisation. Si vous stockez d'autres données, vous pouvez non seulement prendre en charge des changements dans l'API, mais vous pouvez également proposer plus facilement d'autres fonctions, par exemple rechercher des éléments similaires ou rechercher un site différent à des fins de comparaison de prix.

Donc mon penchant est de cacher un peu plus d'informations - comme pour l'auteur de livres et le titre disent.

2). Je ne suis pas sûr de comprendre exactement les alternatives. La question est-elle de savoir si Item a lui-même la logique "persistence" pour appeler l'API, ou si vous avez un objet Library qui récupère des Items? Mon instinct est que vous aurez besoin d'une bibliothèque pour gérer les recherches, il peut encapsuler les détails de l'accès à un ou plusieurs sites distants.

Questions connexes