REST API для нескольких действий над файлом - PullRequest
1 голос
/ 16 ноября 2009

Это продолжение моего вопроса о том, как разработать REST API для сервера анализа медиа. Согласно ответу Дерреля, в моем текущем проекте я начинаю анализ медиа-файла, используя POST /facerecognition/analysisrequests?profileId=33, который указывает, что должен использоваться идентификатор профиля 33 (ранее созданный на сервере другим POST).

У меня два коротких вопроса:

  1. Как расширить этот подход, чтобы иметь несколько запросов на анализ в одном файле, например выполнять распознавание лиц, обнаружение текста и обнаружение рекламы для данного файла? Использует двоичное кодирование (например, каждый бит означает анализ) и, например, POST http:[server URL]/00000011/analysisrequests?profileId=33 хорошая идея?
  2. Является ли использование БД на стороне сервера (например, mySQL) лучшим способом для отслеживания всех профилей и идентификаторов процессов?

Спасибо

C

Ответы [ 2 ]

2 голосов
/ 17 ноября 2009

Я бы поставил типы анализа, запрошенные, как параметры, а не как часть пути. Они могут быть параметрами POST в теле запроса или указываться в списке URL-адресов profileId. Пример: POST http://server/analysisrequest?profileId=33&analysisType=faceRecognition&analysisType=textDetection. Это нормально, чтобы передать несколько значений для параметра.

Вы можете отправить двоичную кодировку типа анализа, но ее расшифровка намного более понятна и самодокументирована. Бинарное кодирование немного хрупко при добавлении нового типа анализа; добавление новой цифры будет влиять на все запросы, даже те, которые не используют новый тип.

База данных на стороне сервера типична для такого рода веб-приложений и, вероятно, является хорошим решением. Вы также можете рассмотреть решение для работы с базами данных SQL, например sqlite или derby , чтобы избежать сложности отдельного процесса базы данных.

0 голосов
/ 17 ноября 2009

Я бы порекомендовал более полно использовать HTTP POST . Сделайте все запросы POST к одному и тому же URI: /analysisrequest. Используйте application/x-www-form-urlencoded для отправки параметров.

Итак:

Host: yourserver.com
Accept: */*
Content-Length: 73
Content-Type: application/x-www-form-urlencoded

face_recognition=true&text_detection=true&ad_detection=true&profile_id=33

multipart/form-data также позволяет отправлять анализируемый файл в том же запросе, что и операции над файлом, при условии, что это желаемый сценарий. С дополнительным преимуществом вы должны иметь возможность использовать одну и ту же конечную точку API как для HTML-форм, так и для вашего REST API.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...