Question

Nous avons développé un portail Web B2B pour Graphics Job Work, similaire à Camera Ready Art (www.camerareadyart.com). Il est destiné aux personnes souhaitant convertir des images bitmap en images vectorielles, à la conception de logo et au traitement général de l’image, comme la coloration d’images en noir et blanc en couleurs, etc.

Nous souhaitons ajouter une fonctionnalité permettant aux clients (nos clients) d’utiliser un ensemble d’API que nous fournissons pour publier directement leurs travaux depuis leur site, sans avoir à visiter notre site littéralement pour publier leurs travaux.

Je n’ai jamais rien fait de pareil jusqu’à ce jour, je n’ai donc aucune idée de la façon de mettre en œuvre une telle chose. Je souhaite également savoir comment nous pouvons mettre en œuvre la sécurité afin que seules les personnes autorisées puissent afficher leur travail?

Quelqu'un peut-il me donner des idées sur la façon dont nous pouvons faire quelque chose comme ça.

Était-ce utile?

La solution

Cette question couvre un très grand domaine et je doute qu'une seule réponse puisse couvrir des sujets en détail. Ce que je peux faire, c'est proposer quelques points de départ en fonction des erreurs que j'ai commises.

Construisez sur votre propre API
N'ajoutez pas de fonctionnalités d'API à un système existant. Cela va:

  • entraînera une charge de test supplémentaire (vous devrez tester votre application et l'API indépendamment)
  • entraînera une augmentation des coûts de maintenance globaux
  • résulte en une API de qualité inférieure à celle que vous souhaitez offrir

Votre objectif général devrait être de créer l’API d’abord, puis votre application au-dessus de votre propre API. Cela présente les avantages suivants:

  • les tests de l'API sont intrinsèquement effectués lors du test de votre application
  • vous n'oublierez pas d'ajouter les méthodes d'API requises

Votre application et votre logique d'application (l'API) seront séparées de manière logique. Il y aura une séparation claire entre elles en termes de ce que chaque côté de l'équation fait et de ce dont il est responsable. Cela aidera à guider le développement. Cela vous permettra également de mettre très facilement l'application et l'API sur différentes machines selon les besoins.

L'utilisation de votre propre API est un point très important. La conception de votre API sera d’abord sous-optimale et seule son utilisation vous permettra de proposer aux utilisateurs les fonctionnalités réellement nécessaires de manière efficace.

Vous allez vous retrouver avec un système qui ressemble à peu près à ceci:

-------------                          -------------
|           |                          |           |
| Your APP  | <= HTTP communication => | Your API  |
|           |                          |           |
-------------                          -------------

Cela met en évidence quelques avantages supplémentaires: vous pouvez remplacer "Votre APP" par n'importe quelle autre application, permettant ainsi à vos clients de créer des applications qui traitent les choses de la manière qui leur convient le mieux. Vous pouvez également créer de nouvelles versions de votre application en plus de l'API existante. Le passage à une nouvelle version de votre site Web public peut s'avérer beaucoup plus simple.

Conception de vos URL: mappage sur des classes et des méthodes
Choisir des URL sensibles pose autant de problèmes que de choisir des noms de classes et de méthodes sensibles. Dériver des URL à partir de classes et de leurs méthodes est une bonne approche. S'il n'y a pas de corrélation sensible entre les URL et les classes / méthodes, les choses seront plus difficiles à gérer à long terme.

Personnellement, je préfère associer des URL à des classes et à des méthodes de la manière suivante:

  • mappez les classes sur les répertoires de niveau supérieur
  • mappez les méthodes sur les sous-répertoires des répertoires de niveau supérieur

Exemple:
L’URL de votre API est https://api.camerareadyart.com .
Vous avez un objet image avec les méthodes toColour () et toBlackAndWhite () .

Cela peut correspondre à:

https://api.camerareadyart.com/image/toColour/
https://api.camerareadyart.com/image/toBlackAndWhite/

De même pour la conversion bitmap en vecteur:

https://api.camerareadyart.com/bitmap/toVector/

Conception des réponses
Que se passe-t-il lorsque quelqu'un récupère des données ou en envoie des données à l'une de vos URL? Comment sont gérées les erreurs, comment sont traitées les exceptions? Quelle forme prennent les réponses?

Je ne peux pas vous dire quoi faire ici. Personnellement, je préfère mapper les choses le plus près possible de HTTP et ensuite aller au-delà lorsque cela est nécessaire.

Par exemple, si une demande entrante est acceptée et traitée, mais rencontre une erreur en interne, je générerais une réponse de statut 500. De même, si une méthode d'API nécessite une authentification qui n'a pas été fournie, je pourrais émettre une 403. Tirer parti des fonctionnalités HTTP existantes vous évite d'avoir à réinventer certaines choses.

Utiliser les aspects existants de HTTP
En plus d’utiliser judicieusement les codes d’état HTTP, veillez à rechercher une méthode exclusivement HTTP permettant de faire quelque chose avant de lancer votre propre solution.

Voulez-vous que l'utilisateur spécifie si le format de réponse doit être XML ou JSON? Utilisez l'en-tête HTTP Accept.

Vous souhaitez rediriger un client vers une autre URL pour récupérer le résultat d'une requête? Utilisez l'en-tête HTTP Location.

Autres conseils

Vous avez évidemment besoin que vos services Web d’arrière-plan soient conçus et fonctionnent. Cependant, toutes les fonctionnalités supplémentaires (sécurité, limitation, gestion des clés OAuth, portail abonné, console interactive permettant d’essayer les API, etc.) constituent un ensemble assez standard de fonctionnalités que vous ne devriez probablement pas développer vous-même.

Il existe des solutions commerciales de gestion des API sur le marché. Je travaille pour WSO2, qui dispose d’un gestionnaire d’API WSO2 100% open-source (licence Apache), que vous pouvez télécharger gratuitement ici ou à utiliser comme version hébergée dans le nuage dans Cloud API WSO2 .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top