Как разработать RStful API для механизма анализа мультимедиа
-
22-07-2019 - |
Вопрос
Я новичок в концепции Restful, и мне нужно разработать простой API для службы анализа мультимедиа, которую мне нужно настроить для выполнения различных задач, например.анализ лица, определение области и т. д.на загруженных изображениях и видео.
Схема моего первоначального дизайна такова:
- Клиент отправляет POST XML-файл конфигурации
http://manalysis.com/facerecognition
.Это создает профиль который можно использовать для нескольких сеансов анализа.XML ответа включает в себяProfileID
для ссылки на этот профиль.Клиенты могут пропустить этот шаг, чтобы использовать параметры конфигурации по умолчанию. - Видеоданные клиента POST для анализа
http://manalysis.com/facerecognition
(с ProfileID в качестве параметра, если он настроен).Это создает сеанс анализа.Возвратный XML имеетSessionID
. - Клиент может отправить GET на
http://manalysis.com/facerecognition/SessionID
чтобы получить статус сессии.
Я на правильном пути?Конкретно у меня есть следующие вопросы:
- Должен ли я включить
facerecognition
в URL?Рой Филдинг говорит, что «REST API не должен определять фиксированные имена ресурсов или иерархии». Это пример той ошибки? - Результаты анализа могут быть возвращены клиенту в одном большом XML-файле или при обнаружении каждого события.Как мне сообщить механизму анализа, куда возвращать результаты?
- Должен ли я явно удалить профиль после завершения анализа с помощью вызова DELETE?
Спасибо,
С
Решение
Вы можете исправить URL-адрес точки входа,
GET /facerecognition
<FaceRecognitionService>
<Profiles href="/facerecognition/profiles"/>
<AnalysisRequests href="/facerecognition/analysisrequests"/>
</FaceRecognitionService>
Создайте новый профиль, разместив профиль XML по URL-адресу в атрибуте href элемента Profiles.
POST /facerecognition/profiles
201 - Created
Location: /facerecognition/profile/33
Запустите анализ, создав новый запрос на анализ.Я бы избегал использования термина «сессия», поскольку он слишком общий и вызывает множество негативных ассоциаций в мире REST.
POST /facerecognition/analysisrequests?profileId=33
201 - Created
Location: /facerecognition/analysisrequest/2103
Проверьте статус процесса
GET /facerecognition/analysisrequest/2103
<AnalysisRequest>
<Status>Processing</Status>
<Cancel Method="DELETE" href="/facerecognition/analysisrequest/2103" />
</AnalysisRequest>
когда обработка завершится, тот же GET может вернуться
<AnalysisRequest>
<Status>Completed</Status>
<Results href="/facerecognition/analysisrequest/2103/results" />
</AnalysisRequest>
Конкретные URL-адреса, которые я выбрал, относительно произвольны, вы можете использовать те, которые вам наиболее понятны.