0

我有一个 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返回值并将其绑定到应用程序页面控件的代码。如果我输入在数据库中找到匹配项的成功查询,一切都会很好。

我无法解决的是验证错误查询的方法。我想测试返回的值,var searchTerm = JSON.parse(Result.responseText)如果它是成功的结果,则继续做我现在正在做的事情,但在失败时以不同的方式处理结果。我应该做哪些检查来测试这个?我很高兴在我的应用程序或网络服务中实施额外的验证,任何建议都值得赞赏。

谢谢!

4

1 回答 1

1

有几种不同的方法可以解决这个问题。

一种方法是利用 HTTP 响应标头来传递有关查询的信息(即,已找到记录的 HTTP200状态、404未找到的记录、400错误请求等)。然后,您可以检查响应代码以确定您需要做什么。这种方法的优点是不需要对响应消息格式进行任何更改。缺点可能是您必须修改要返回的标头。这是用于真正 RESTful 服务的更典型的方法。

另一种方法可能是将成功/错误消息作为结构化 JSON 响应的一部分返回。这样您的 JSON 可能如下所示:

{
    "result":"found",
    "message":
        {
            "terms":[{"term":{"termName":"Focus Puller","definition":"A focus puller or 1st assistant camera..."}}]}
        }
}

您显然可以更改result数据中的值以返回错误并将错误消息放入message.

这里的优点是您不必担心标题修改,并且您返回的数据将始终可以通过JSON.parse(). 缺点是现在您的响应消息更加冗长。

于 2012-12-24T22:39:08.097 回答