ServiceNow编码查询验证

Fan*_*dic 1 servicenow

我打算让用户在ServiceNow SOAP请求中指定编码查询.

问题是如果用户指定了无效的查询字符串(例如"?#@"或"sometext"),ServiceNow不会返回任何异常,而是返回每行或根本没有行.

有没有办法通过webservice检查编码查询的有效性?

小智 5

Fandic,

如果您提前知道SOAP查询将针对哪个表运行(或者可以在用户提交查询时从用户处获取该信息),则可以专门设置自己的Web服务以检查查询字符串的有效性.

GlideRecord具有用于放入编码查询的"addedEncodedQuery"方法,它具有getEncodedQuery,用于将当前查询转换为编码字符串.如果你实例化一个GlideRecord对象,并传递一个无效的查询字符串,如下所示:

var myGR = new GlideRecord('incident');
    myGr.addEncodedQuery('invalid_field_foo=BAR');
Run Code Online (Sandbox Code Playgroud)

然后,您可以调用getEncodedQuery以查看它是否有效:

var actual_query = myGR.getEncodedQuery(); //sys_idNotValidnull
Run Code Online (Sandbox Code Playgroud)

您不应该在输入和输出之间进行简单比较,因为API不保证有效查询将返回与输入的完全相同的字符串.最好简单地验证actual_query不等于'sys_idNotValidnull'.