У меня есть расширение ресурса отдыха, где я указываю типы параметров. Но я заметил, что параметры, которые я получаю в моем POST или GET, имеют не тот же тип, что и параметр введите my metadata.xml .. Все они - xs: string. Но когда я смотрю на API-интерфейс поиска, он выполняет оценки типов параметров. Я копал немного глубже, и я заметил, что в /MarkLogic/rest-api/endpoints/config.xqy
get-rsrc-list-query-rule()
не получает мои правила метаданных, которые я указал в metadata.xml, но вне-поле поиска REST API, это получить правильные правила ..Расширение ресурса Marklogic Rest not honoring metadata.xml
declare function conf:get-rsrc-list-query-rule() as element(rest:request) {
<rest:request
allow-post-alias="true"
fast-match="/*/config/resources"
uri="^/(v1|get-rsrc-list-query-ruleLATEST)/config/resources/?$"
endpoint="/MarkLogic/rest-api/endpoints/resource-list-query.xqy">
<rest:http method="GET">
<rest:param name="format" required="false" values="json|xml"/>
<rest:param name="refresh" required="false" as="boolean"/>
</rest:http>
</rest:request>
};
в то время как для вне поиска окно REST API, правильные правила направляются
declare function conf:get-search-query-request-rule() as element(rest:request) {
<rest:request
allow-post-alias="true"
fast-match="/*/search"
uri="^/(v1|LATEST)/search(/)?$"
endpoint="/MarkLogic/rest-api/endpoints/search-list-query.xqy"
user-params="allow-dups">
<rest:http method="GET">
<rest:param name="q" required="false"/>
<rest:param name="format" required="false" values="json|xml"/>
<rest:param name="start" as="unsignedLong" required="false"/>
<rest:param name="pageLength" as="unsignedLong" required="false"/>
<rest:param name="category" required="false" repeatable="true"
values="content|metadata|{string-join(docmodcom:list-metadata-categories(),"|")}"/>
<rest:param name="options" as="string" required="false"/>
<rest:param name="collection" as="string" required="false" repeatable="true"/>
<rest:param name="directory" as="string" required="false" repeatable="false"/>
<rest:param name="view" as="string" values="metadata|results|facets|all|none"/>
<rest:param name="txid" as="string" required="false"/>
<rest:param name="database" required="false"/>
<rest:param name="transform" required="false"/>
<rest:param name="structuredQuery" required="false"/>
<rest:auth>
<rest:privilege>http://marklogic.com/xdmp/privileges/rest-reader</rest:privilege>
<rest:kind>execute</rest:kind>
</rest:auth>
</rest:http>
<rest:http method="POST">
<rest:param name="q" required="false"/>
<rest:param name="format" required="false" values="json|xml"/>
<rest:param name="category" required="false" repeatable="true"
values="content|metadata|{string-join(docmodcom:list-metadata-categories(),"|")}"/>
<rest:param name="start" as="unsignedLong" required="false"/>
<rest:param name="pageLength" as="unsignedLong" required="false"/>
<rest:param name="options" as="string" required="false"/>
<rest:param name="collection" as="string" required="false" repeatable="true"/>
<rest:param name="directory" as="string" required="false" repeatable="false"/>
<rest:param name="view" as="string" values="metadata|results|facets|all|none"/>
<rest:param name="txid" as="string" required="false"/>
<rest:param name="database" required="false"/>
<rest:param name="transform" required="false"/>
<rest:content-type>text/xml</rest:content-type>
<rest:content-type>text/json</rest:content-type>
<rest:content-type>application/xml</rest:content-type>
<rest:content-type>application/json</rest:content-type>
<rest:auth>
<rest:privilege>http://marklogic.com/xdmp/privileges/rest-reader</rest:privilege>
<rest:kind>execute</rest:kind>
</rest:auth>
</rest:http>
<rest:http method="HEAD"/>
<rest:http method="OPTIONS"/>
</rest:request>
};
I подумал, когда я укажу свои типы параметров, ресурс rest api будет принудительно применять типы, иначе это вызовет ошибку, но это не так. Это происходит с использованием готового дополнения api ,
Я не понимаю этого права? У меня все получилось? Как рассказать остальное расширение ресурсов для соблюдения моих типов параметров, указанных в моем метаданных.xml
Можете ли вы подробнее рассказать, какую версию MarkLogic вы работаете (точно), и как вы разместили ваш расширение отдыха? – grtjn
ML версия '8.0-5.4', и я развертываю с использованием ml-gradle. Я вижу свой« metadata.xml »в'/marklogic.rest.resource/crSearch/assets/metadata.xml' – Ravi