пользовательский фрагмент, возвращающий JSON или XML

В моих настраиваемых параметрах поиска я указал элемент результатов преобразования.

<options xmlns="http://marklogic.com/appservices/search">
    <transform-results apply="highlighted-person-summary-snippet" ns="http://ir.abbvie.com/people-db/person-query"
                       at="/ext/lib/person-query.xqy">
    </transform-results>
</options>

Может ли функция XQuery, реализующая пользовательский фрагмент, иметь доступ к заголовкам accept в поисковом запросе и использовать это? Я бы предпочел не иметь два отдельных XML-файла опций, определенных с той лишь разницей, что один возвращает XML, а другой возвращает JSON.


person TJ Tang    schedule 07.06.2016    source источник


Ответы (1)


Да, просто используйте xdmp:get-request-header. Но если вы создадите правильную структуру элемента search:match, REST API должен автоматически преобразовать ее в json, если это необходимо.

ХТХ!

person grtjn    schedule 08.06.2016
comment
Это работает для меня. Знаете ли вы, есть ли где-нибудь библиотека, которая уже анализирует заголовки Accept, например, что используется для обработки заголовков перед переходом к преобразованию в карте $context? Сейчас я занимаюсь простыми случаями, но могут быть и более сложные заголовки Accept. - person TJ Tang; 08.06.2016
comment
Не то, чтобы я знаю. Я бы просто предположил относительно простые заголовки Accept. Программные вызовы обычно обеспечивают простые вызовы, так как они ожидают определенного пантомимы ответа. Вы можете использовать такие функции, как fn:contains или fn:matches, чтобы обеспечить нечеткое сопоставление. - person grtjn; 08.06.2016