0

Webサービスが照会され、一致するものが見つかったときにJSONオブジェクトを返すWebサービスがあります。正常に返される例を以下に示します。

{"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次に、戻り値を処理してアプリページコントロールにバインドするコードがあります。DBで一致するものを見つける成功したクエリを入力すると、すべてがうまく機能します。

私が解決できないのは、悪いクエリを検証する方法です。によって返される値をテストし、var searchTerm = JSON.parse(Result.responseText)それが成功した結果である場合は現在行っていることを続行しますが、失敗した場合は結果を別の方法で処理します。これをテストするには、どのようなチェックを行う必要がありますか?アプリまたはWebサービスのいずれかで追加の検証を実装できてうれしいです。アドバイスをいただければ幸いです。

ありがとう!

4

1 に答える 1

1

これにアプローチするには、いくつかの異なる方法があります。

1つのアプローチは、HTTP応答ヘッダーを利用して、クエリに関する情報を中継することです(つまり、見つかったレコード、見つからなかったレコード、不正な要求などのHTTP200ステータス)。次に、応答コードを調べて、何をする必要があるかを判断できます。このアプローチの長所は、応答メッセージの形式を変更する必要がないことです。短所は、返されるヘッダーを変更する必要があることです。これは、真のRESTfulサービスで使用されるアプローチのより典型的なものです。404400

別のアプローチは、構造化された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 に答える