问题描述
在MarkLogic 9中,我使用带有POST方法的自定义SJS服务,在该方法中,我进行了一些基本搜索和验证,从而为错误提供了自定义结果(由于需要而未使用fn.error)。
我在POSTMAN中返回的错误是一个简单的JSON,如下所示:
{
"code":400,"message":"Bad request","reason":"string"
}
即使使用xdmp.setResponseCode(400,"Bad request");
,即使在POSTMAN响应上方的HTTP代码消息标头也显示“ 200 OK”
如何在遵循标准协议的同时将HTTP代码设置为手动编号/消息?
解决方法
这取决于自定义SJS服务是否
-
数据服务端点
在* .api声明中设置errorDetail属性并抛出 错误映射到HTTP状态代码(请参见 https://docs.marklogic.com/guide/java/DataServices#id_74238)。
-
REST API资源服务扩展
对于2xx状态,请将
outputStatus
属性设置为context
参数对象(请参见 https://docs.marklogic.com/guide/rest-dev/extensions#id_26045)。对于4xx状态,抛出
RESTAPI-SRVEXERR
错误(请参阅 https://docs.marklogic.com/guide/rest-dev/extensions#id_20992)。 -
HTTP端点模块
调用
xdmp.setResponseCode()
函数(请参阅https://docs.marklogic.com/xdmp.setResponseCode)
希望有帮助,