如何关闭MarkLogic v1/eval API的额外响应头?
解决MarkLogic v1/eval响应冗余内容的方法
1. 给v1/eval端点加参数指定输出格式
在请求URL后追加format=text参数,让端点直接返回纯文本格式的响应,不会生成multipart分隔符和额外头信息。修改后的curl命令:
curl --silent -u user:pass --digest -X POST --data xquery@test.xqy "http://localhost:8000/v1/eval?format=text"
执行后,XQuery(1, 2, 3)的返回结果就是:
1 2 3
2. 设置HTTP Accept请求头
通过Accept: text/plain请求头告知MarkLogic你需要纯文本响应,curl命令如下:
curl --silent -u user:pass --digest -H "Accept: text/plain" -X POST --data xquery@test.xqy http://localhost:8000/v1/eval
这个方法和加format=text参数的效果完全一致,都能得到干净的纯文本输出。
3. curl结合文本工具过滤(备选)
如果前两种方法没法用,也可以用curl配合sed或awk这类工具过滤冗余内容。比如用sed去掉multipart分隔符和头信息:
curl --silent -u user:pass --digest -X POST --data xquery@test.xqy http://localhost:8000/v1/eval | sed -n '/^--/,$!p;/^$/,$p' | sed '/^--/d'
不过这种方法依赖响应格式的稳定性,优先推荐前两种直接通过端点控制输出的方式。
内容的提问来源于stack exchange,提问作者chriskelly
相关产品推荐
相关产品推荐

