Pregunta

Soy nuevo en el concepto de Restful y tengo que diseñar una API simple para un servicio de análisis de medios que necesito configurar, para realizar varias tareas, p. análisis de rostros, detección de regiones, etc. en imágenes y videos cargados.

El esquema de mi diseño inicial es el siguiente:

  • El cliente envía un archivo XML de configuración a http://manalysis.com/facerecognition . Esto crea un perfil que puede usarse para múltiples sesiones de análisis. El XML de respuesta incluye un ProfileID para referirse a este perfil. Los clientes pueden omitir este paso para usar los parámetros de configuración predeterminados
  • Los datos de video POST del cliente se analizarán en http://manalysis.com/facerecognition (con ProfileID como parámetro, si está configurado). Esto crea una sesión de análisis . El XML de retorno tiene el SessionID .
  • El cliente puede enviar un GET a http://manalysis.com/facerecognition/SessionID para recibir el estado de la sesión.

¿Estoy en el camino correcto? Específicamente, tengo las siguientes preguntas:

  • ¿Debo incluir facerecognition en la URL? Roy Fielding dice que "una API REST no debe definir nombres de recursos fijos o jerarquías". ¿Es esta una instancia de ese error?
  • Los resultados del análisis pueden devolverse al cliente en un archivo XML grande o cuando se detecta cada evento. ¿Cómo debo decirle al motor de análisis dónde devolver los resultados?
  • ¿Debería eliminar explícitamente un perfil cuando se realiza el análisis, a través de una llamada ELIMINAR?

Gracias,

C

¿Fue útil?

Solución

Puede corregir la URL del punto de entrada,

GET /facerecognition

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

Cree un nuevo perfil publicando el perfil XML en la URL en el atributo href del elemento Perfiles

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

Inicie el análisis creando una nueva solicitud de análisis. Evitaría usar el término sesión, ya que es demasiado genérico y tiene muchas asociaciones negativas en el mundo REST.

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

Verifique el estado del proceso

GET /facerecognition/analysisrequest/2103

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

cuando el procesamiento ha finalizado, el mismo GET podría volver

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

Las URL específicas que he elegido son relativamente arbitrarias, puede usar lo que sea más claro para usted.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top