2009-10-29 3 views
2

Je suis nouveau au concept Restful et je dois concevoir une API simple pour un service d'analyse de média que je dois configurer, pour effectuer diverses tâches, par ex. analyse de visage, détection de région, etc. sur des images et des vidéos téléchargées.Comment concevoir une API REStful pour un moteur d'analyse de média

Aperçu de ma conception initiale est la suivante:

  • client affiche un fichier XML de configuration http://manalysis.com/facerecognition. Cela crée un profil pouvant être utilisé pour plusieurs sessions d'analyse. Réponse XML inclut un ProfileID pour faire référence à ce profil. Les clients peuvent ignorer cette étape pour utiliser les paramètres de configuration par défaut.
  • Les données vidéo POST du client doivent être analysées en http://manalysis.com/facerecognition (avec ProfileID en tant que paramètre, s'il est configuré). Cela crée une session d'analyse . Retour XML a le SessionID.
  • Le client peut envoyer un GET au http://manalysis.com/facerecognition/SessionID pour recevoir l'état de la session.

Suis-je sur la bonne voie? Plus précisément, j'ai les questions suivantes:

  • Dois-je inclure facerecognition dans l'URL? Roy Fielding dit qu '«une API REST ne doit pas définir des noms de ressources fixes ou des hiérarchies» Est-ce une instance de cette erreur?
  • Les résultats de l'analyse peuvent être renvoyés au client dans un fichier XML volumineux ou lorsque chaque événement est détecté. Comment devrais-je dire au moteur d'analyse où renvoyer les résultats?
  • Dois-je supprimer explicitement un profil une fois l'analyse terminée, via un appel DELETE?

Merci,

C

+0

Une autre question: Comment peut-on spécifier au moteur d'utiliser une adresse IP vidéo en streaming plutôt qu'un fichier dans le POST? – recipriversexclusion

+0

POSTE l'URL vers la vidéo de diffusion dans le corps du POST, ou dans la chaîne de requête et permettre au serveur de faire un HTTP GET sur la source vidéo. –

Répondre

4

Vous pouvez corriger l'URL du point d'entrée,

GET /facerecognition 

<FaceRecognitionService> 
    <Profiles href="/facerecognition/profiles"/> 
    <AnalysisRequests href="/facerecognition/analysisrequests"/> 
</FaceRecognitionService> 

Créer un nouveau profil en affichant le profil de XML à l'URL dans l'attribut href de la Eléments de profil

POST /facerecognition/profiles 
201 - Created 
Location: /facerecognition/profile/33 

In Itiate l'analyse en créant une nouvelle demande d'analyse. J'éviterais d'utiliser le terme session car il est trop générique et a beaucoup d'associations négatives dans le monde REST.

POST /facerecognition/analysisrequests?profileId=33 
201 - Created 
Location: /facerecognition/analysisrequest/2103 

Vérifiez l'état du processus

GET /facerecognition/analysisrequest/2103 

<AnalysisRequest> 
    <Status>Processing</Status> 
    <Cancel Method="DELETE" href="/facerecognition/analysisrequest/2103" /> 
</AnalysisRequest> 

lorsque le traitement est terminé, le même GET pourrait revenir

<AnalysisRequest> 
    <Status>Completed</Status> 
    <Results href="/facerecognition/analysisrequest/2103/results" /> 
</AnalysisRequest> 

Les URL spécifiques que je choisis sont relativement arbitraires, vous peut utiliser ce qui est le plus clair pour vous.

Questions connexes