Моя текущая задача - разработать REST-сервис, который можно использовать для преобразования из одного типа мультимедиа в другой (например, из видео / x-msvieo в видео / x-flv). Его нельзя использовать в браузере.
Как правило, я позволяю клиентам POST медиа-файлы и возвращаю им некоторые URL для дальнейшего использования (например, http://www.example.com/Media/12345).
Интересно, - и вот где возникают вопросы - что процесс преобразования можно интерпретировать двумя различными способами:
1) Преобразованный носитель - это просто другое представление исходного, поэтому для запроса носителя в новом формате вы можете просто получить GET http://example.com/Media/12345, и указать службе в заголовке Accept, какой формат вы используете. необходимость. После конвертации, например, большого видео, служба ответит 202 «Принято» до завершения конвертации. Но что должно произойти, если преобразование не удалось по какой-либо причине?
2) Поскольку преобразование занимает очень много времени, можно представить процесс как его собственный ресурс. В этом случае нужно будет отправить POST некоторую форму описания задания (вероятно, xml) в http://example.com/Media/12345, и служба ответит новым URI для запрошенного преобразования (например, http://example.com/Media/12345/jobs/1). Но не будет такого рода дизайн будет совсем не REST-линке?
То, что у меня сейчас есть, это:
1.) POST медиафайл на http://example.com/Media
2.) Ответ: 201 Создано / Местоположение: http://example.com/Media/12345
3.) ПОЛУЧИТЬ http://example.com/Media/12345
4.) Ответ: 200 Ok и xml вот так:
<media id="123457">
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://example.com/Media/12345/video/x-flv">video/x-flv</link>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://example.com/Media/12345/video/mpeg">video/mpeg</link>
</media>
Ссылки в xml отправляют вас к целям конверсии, доступным для этого носителя.
5.) Выберите из ссылок в xml, чтобы начать преобразование / получить результат, набрав http://example.com/Media/12345/video/mpeg
6.) Ответ: 202 Принято / Местоположение: http://example.com/Media/12345/video/mpeg/Status
7.) Повторяйте шаг 5, пока преобразование не будет выполнено, или посмотрите на http://example.com/Media/12345/video/mpeg/Status, чтобы увидеть, что происходит в настоящее время.
Итак, большое спасибо за чтение всего этого:)
Что вы думаете о моем подходе? Что бы вы сделали по-другому?
Я совершенно новичок в этом деле, поэтому любые предложения очень ценятся.
С уважением: Билл