2016-06-07 8 views
0

In meinen benutzerdefinierten Suchoptionen habe ich ein transform-results-Element angegeben.benutzerdefiniertes Snippet, das entweder JSON oder XML zurückgibt

<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> 

Gibt es trotzdem, dass die XQuery-Funktion, die den benutzerdefinierten Schnipsel implementiert Zugang zu dem, was die akzeptieren Header haben kann, dass in der Suchanfrage und in der Lage zu nutzen sind? Ich würde lieber nicht zwei separate Optionen haben XML-Dateien mit dem einzigen Unterschied definiert, dass man XML zurückgibt, während das andere JSON zurückgibt.

Antwort

3

Ja, verwenden Sie einfach xdmp:get-request-header. Aber wenn Sie eine korrekte Suche ausgeben: passen Sie die Elementstruktur an, sollte die REST API diese automatisch in JSON umwandeln, falls nötig.

HTH!

+0

Das funktioniert für mich. Wissen Sie, ob es irgendwo eine Bibliothek gibt, die die Accept-Header bereits analysiert, wie zum Beispiel, was zur Verarbeitung der Header verwendet wird, bevor sie in der $ -Kontext-Map an die Transformation übergeben werden? Ich gehe jetzt mit den einfachen Fällen um, aber es könnte komplexere Accept-Header geben. –

+0

Nicht dass ich mir dessen bewusst bin. Ich würde nur relativ einfache Accept-Header annehmen. Programmatische Aufrufe bieten normalerweise einfache, da sie eine bestimmte Antwort Mime erwarten. Sie können Funktionen wie fn: contains oder fn: matches verwenden, um eine Fuzzy-Anpassung zu ermöglichen. – grtjn