Como criar uma API RESTful para um motor de análise de mídia
-
22-07-2019 - |
Pergunta
Eu sou novo ao conceito Sossegado e tem que projetar uma API simples para um serviço de análise de mídia eu preciso de configurar, para executar várias tarefas, por exemplo, análise de rosto, detecção de região, etc. em imagens carregadas e vídeo.
Contorno do meu projeto inicial é a seguinte:
- POSTs cliente um arquivo XML de configuração para
http://manalysis.com/facerecognition
. Isso cria um perfil que pode ser usado para várias sessões de análise. XML Response inclui umProfileID
para se referir a esse perfil. Os clientes podem pular esta etapa para usar os parâmetros de configuração padrão - dados de vídeo POSTs cliente a ser analisados ??para
http://manalysis.com/facerecognition
(com profileId como um parâmetro, se for configurada). Isso cria uma sessão de Análise . Retorno XML tem aSessionID
. - O cliente pode enviar um GET para
http://manalysis.com/facerecognition/SessionID
para receber o status da sessão.
Am I no caminho certo? Especificamente, eu tenho as seguintes perguntas:
- Devo incluir
facerecognition
na URL? Roy Fielding diz que "uma API REST não deve definir nomes de recursos fixos ou hierarquias" É este um caso de esse erro? - Os resultados da análise podem ser devolvido ao cliente em um grande arquivo XML ou quando cada evento é detectado. Como devo dizer ao mecanismo de análise onde retornar os resultados?
- Devo excluir explicitamente um perfil quando a análise é feita, através de uma chamada apagar?
Obrigado,
C
Solução
Você pode corrigir a url ponto de entrada,
GET /facerecognition
<FaceRecognitionService>
<Profiles href="/facerecognition/profiles"/>
<AnalysisRequests href="/facerecognition/analysisrequests"/>
</FaceRecognitionService>
Criar um novo perfil ao postar o perfil XML para o URL no atributo href do elemento Perfis
POST /facerecognition/profiles
201 - Created
Location: /facerecognition/profile/33
Iniciar a análise através da criação de um novo pedido de análise. Gostaria de evitar usando a sessão de prazo, uma vez que é muito genérico e tem muitas associações negativas no mundo do REST.
POST /facerecognition/analysisrequests?profileId=33
201 - Created
Location: /facerecognition/analysisrequest/2103
Verifique o status do processo
GET /facerecognition/analysisrequest/2103
<AnalysisRequest>
<Status>Processing</Status>
<Cancel Method="DELETE" href="/facerecognition/analysisrequest/2103" />
</AnalysisRequest>
quando o processamento estiver concluído, o mesmo GET poderia retornar
<AnalysisRequest>
<Status>Completed</Status>
<Results href="/facerecognition/analysisrequest/2103/results" />
</AnalysisRequest>
As URLs específicos que eu escolhi são relativamente arbitrária, você pode usar o que é a mais clara para você.