我有一个Web服务,在查询Web服务并找到匹配项时返回JSON对象,下面是成功返回的示例:
{"terms":[{"term":{"termName":"Focus Puller","definition":"A focus puller or 1st assistant camera..."}}]}
如果查询没有产生匹配,则返回:
Errant query: SELECT termName, definition FROM terms WHERE termID = xxx
现在,当我通过Win 8 Metro应用程序访问它时,我使用以下代码解析JSON表示法对象以获取JS对象:
var searchTerm = JSON.parse(Result.responseText)
然后我有代码处理searchTerm
并将返回的值绑定到app页面控件。如果我输入一个在数据库中找到匹配的成功查询,那么一切都很有效。
我无法解决的是一种验证错误查询的方法。我想测试var searchTerm = JSON.parse(Result.responseText)
返回的值,如果它是一个成功的结果,继续做我现在正在做的事情,但是在失败时以不同的方式处理结果。我应该检查一下这个?我很高兴在我的应用程序或Web服务中实现额外的验证,任何建议表示赞赏。
谢谢!
答案 0 :(得分:1)
有几种不同的方法可以解决这个问题。
一种方法是利用HTTP响应标头来传递有关查询的信息(即找到的记录的HTTP 200
状态,404
表示找不到的记录,{{1}对于错误的请求等)。然后,您可以检查响应代码以确定您需要执行的操作。这种方法的优点是,这不需要对响应消息格式进行任何更改。 con可能是您必须修改返回的标头。这是真正的RESTful服务使用的方法中更典型的。
另一种方法可能是将成功/错误消息作为结构化JSON响应的一部分返回。这样你的JSON可能看起来像:
400
您显然可以更改数据中{
"result":"found",
"message":
{
"terms":[{"term":{"termName":"Focus Puller","definition":"A focus puller or 1st assistant camera..."}}]}
}
}
的值以返回错误,并将错误消息放在result
中。
这里的专业人员是您不必担心标头修改,并且您返回的数据始终可以通过message
进行解析。结果是,现在你的回复消息中有额外的冗长。