2016-02-14 4 views
3

Я хотел бы создать пользовательскую конечную точку для загрузки файлов, могу ли я использовать общие дескрипторы Rest Rest и использовать метод POST для получения содержимого файла. Я вижу в документацииRest extension API для загрузки файла в marklogic

в MarkLogic 8, метода POST в транзакции одного заявления выполняется в режиме запроса

что это значит? могу ли я просто сделать следующее:

declare function repo:post($context as map:map, $params as map:map,$input as document-node()*) as document-node()* 
{ 
    let $filename := xdmp:get-request-field-filename("upload") 
    let $contentType := xdmp:get-request-field-content-type("upload") 
...... 
}; 

это займет «multipart/form-data»; ?? Есть ли примеры, которые я могу посмотреть? не кажется выше способ будет работать для меня

Я также попытался (и любви аннотаций) с использованием RXQ (https://github.com/xquery/rxq), но не выполняется для многочастных/форм-данных ..

Любых указателей о том, как подойти к будет очень полезно ..

Спасибо, Ravi

+0

Можете ли вы поделиться существенным бит вашей формы? – grtjn

+0

Когда я использую ML8 из обозревателя URL-адресов /MarkLogic/rest-api/rewriter.xml), все работает отлично. Я использовал настраиваемый URL-ретранслятор с помощью «rxq», поскольку он поддерживает аннотации, поэтому я не нуждаюсь чтобы создать отдельный xqy для каждой конечной точки .. но выглядит как rxq выходит из строя в ML8 .. – Ravi

+1

Да, новый декларативный перезаписывающий модуль ML8 затрудняет расширение встроенного файла. – grtjn

ответ

3

Если вы просто хотите, чтобы написать единый документ, следует использовать встроенный в REST конечной точки:

http://docs.marklogic.com/REST/PUT/v1/documents

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

http://docs.marklogic.com/guide/rest-dev/transforms

Если логика должна обрабатывать записи, рекомендуется использовать метод PUT:

http://docs.marklogic.com/REST/PUT/v1/resources/%5Bname%5D

При написании одного документа, то указать мим тип, который идентифицирует формат документа. При написании партии документов вы должны упаковать пакет в виде многостраничной/смешанной полезной нагрузки, в которой каждая часть указывает тип mime для формата документа.

При использовании расширения REST вам не нужно взаимодействовать с HTTP. REST API делает это для вас, получая документ и передавая его в вашу функцию. Вы просто написать функцию, которая имеет ожидаемый подпись:

http://docs.marklogic.com/guide/rest-dev/extensions#id_75991

и установить модуль библиотеки с помощью функции:

http://docs.marklogic.com/guide/rest-dev/extensions#id_59112

Надеясь, что помогает,