Domanda

Sono nuovo nel concetto Restful e devo progettare una semplice API per un servizio di analisi dei media che devo impostare, per eseguire varie attività, ad es. analisi del volto, rilevamento della regione, ecc. su immagini e video caricati.

Lo schema del mio progetto iniziale è il seguente:

  • Il client invia un file XML di configurazione a http://manalysis.com/facerecognition . Ciò crea un profilo che può essere utilizzato per più sessioni di analisi. XML di risposta include un ProfileID per fare riferimento a questo profilo. I client possono saltare questo passaggio per utilizzare i parametri di configurazione predefiniti
  • Dati video POST client da analizzare in http://manalysis.com/facerecognition (con ProfileID come parametro, se impostato). Questo crea una sessione di analisi . XML di ritorno ha SessionID .
  • Il cliente può inviare un GET a http://manalysis.com/facerecognition/SessionID per ricevere lo stato della sessione.

Sono sulla buona strada? Nello specifico, ho le seguenti domande:

  • Devo includere riconoscimento facciale nell'URL? Roy Fielding afferma che "un'API REST non deve definire nomi di risorse fisse o gerarchie" È un'istanza di quell'errore?
  • I risultati dell'analisi possono essere restituiti al client in un file XML di grandi dimensioni o quando viene rilevato ciascun evento. Come devo dire al motore di analisi dove restituire i risultati?
  • Devo eliminare esplicitamente un profilo al termine dell'analisi, tramite una chiamata DELETE?

Grazie,

C

È stato utile?

Soluzione

Puoi correggere l'URL del punto di ingresso,

GET /facerecognition

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

Crea un nuovo profilo pubblicando il profilo XML nell'URL nell'attributo href dell'elemento Profili

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

Avvia l'analisi creando una nuova richiesta di analisi. Eviterei di usare il termine sessione poiché è troppo generico e ha molte associazioni negative nel mondo REST.

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

Controlla lo stato del processo

GET /facerecognition/analysisrequest/2103

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

al termine dell'elaborazione, lo stesso GET potrebbe restituire

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

Gli URL specifici che ho scelto sono relativamente arbitrari, puoi usare qualunque sia il più chiaro per te.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top