Веб-сервис для извлечения фрагментов данных - PullRequest
2 голосов
/ 20 января 2010

Я планирую разработать веб-сервис, и мне нравится пробовать архитектуру RESTful. Проблема в том, что я не знаю, подходит ли сервис для него, или лучше использовать SOAP.

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

Я думал о том, чтобы иметь что-то вроде:

/files/{id} --> will inform about the details of the file  
/files--> list all the files  

Проблема в действии. В остальном определяются только GET, POST и (PUT DELETE). Но я хочу что-то вроде загрузки. Моя идея, хотя и не полностью успокаивающая, состоит в том, чтобы создать:
/ Файлы / {ID} / скачать Это вернет что-то вроде

{ "chunk" : "base64 string with chunk data"  
  "next" : "http://XXX/file/id/download?chunk=1  
}

Когда next пусто, весь набор кусков будет загружен.

Что вы думаете? Это нормально, чтобы сделать это таким образом, или это будет лучше, чем традиционный способ с использованием SOAP и определения функций, таких как getFiles (), getFileChunk (chunkNo, file)?

Любой комментарий действительно приветствуется.

Увидимся

Ответы [ 3 ]

3 голосов
/ 21 января 2010

Если вы используете REST, вам не нужно определять собственный протокол "чанкирования", так как все заголовки HTTP Content-Length, Content-Range и Transfer-Encoding используются для отправки чанкованных данных.

См. RFC для полей заголовка HTTP

0 голосов
/ 20 января 2010

Как уже упоминал Джон, возможно, вы захотите разделить ваши файловые ресурсы и метаданные файловых ресурсов (любую информацию о вашем файле). Кроме того, более RESTful способ доступа к вашим чанкам может выглядеть следующим образом:

http://url/files/{id}/chunks

{
    "complete" : false,
    "chunks": [
        "http://url/files/<fileid>/chunks/1",
        "http://url/files/<fileid>/chunks/2",
        "http://url/files/<fileid>/chunks/3",
    ]
}

По сути, здесь вы возвращаете список RESTFUL URI для всех ваших файловых чанков и информацию, если все чанки файла уже заполнены. Я не вижу, чтобы у SOAP было какое-то преимущество, поскольку вы бы определили те же методы (getFile и getChunks), которые уже включены в глагол REST GET.

0 голосов
/ 20 января 2010

Похоже, у вас действительно есть два разных ресурса: file-metadata с и file с. Как насчет чего-то вроде:

/file/{id}          // GET: Retrieve this file's data.
/file-metadata/{id} // GET: Metadata about a particular file. Contains link to file:
                    // {
                    //    ...
                    //    data: "http://.../file/156",  // Where to find file's data.
                    // }
/file-metadata      // GET: List metadata for all files.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...