リクエスト検証セグメント

以降のセグメントは、これまでに説明したセグメント以上に重要です。リクエスト検証セグメントには、リクエストにエラーがある場合のエラー情報が含まれます。また、このセグメントは、エラーがある場合にProduct Advertising API が返す最後のセグメントでもあります。

IsValid 要素の例ですでに示したように、リクエストは有効でした。

<IsValid>True</IsValid>

IsValid 要素は、リクエストの有効性にのみ関係しています。この要素は、リクエストの必須要素が全て指定されているか、パラメータの制限や制約に従っているか、パラメータの値が有効かどうかを報告します。IsValidは、有効なリクエストが Product Advertising API によって処理されることを保証するものではありません。例えば、ItemId が1234ABCDの場合、形式は正しくても、Amazon のカタログには ItemId に該当する商品がないため、リクエストとしては有効でもエラーが返されます。

リクエストが失敗する理由は、次の表で説明しているように多数あります。

問題説明
Incorrect parameters supplied (不正なパラメータ指定)

このリクエストは、オペレーションで必要なパラメータが不足していたり、許可されないパラメータの組み合わせが指定されていたり、Serviceパラメータが省略されていたりしています。

この場合、IsValidは "False" で、リクエストはProduct Advertising API で処理されません。これらのエラーの原因の多くは、URLにスペースがあるため、Product Advertising API がリクエスト全体を読み取れないこと、パラメータ名や値のスペルミスまたは大文字と小文字の間違いなどです。

誤ってリクエストにスペースを入力すると、ブラウザがURLエンコード形式のスペース%20を自動的に挿入します。例えば、ItemId= B12345をリクエストの一部としてブラウザに貼り付けると、ブラウザのURLフィールドはItemId=%20B12345となります。

Invalid values (無効な値)

リクエストが構文的に正しい場合でも、パラメータの値が正しくない場合があります。例えば、Amazon で出品されているどの商品にも一致しない ItemId 値を指定した場合です。

この場合、IsValid の値は "True" ですが、 "not a valid value for ItemId. Please change this value and retry your request." というエラーメッセージが返されます。

Empty result (空の結果)

リクエストは有効ですが、検索条件に一致するデータがありません。

この場合、IsValid の値は "True" になります。パラメータの名前と値は、大文字と小文字を区別します。

Network or processing error (ネットワークエラーまたは処理エラー)

リクエストは有効ですが、ネットワークの停止や処理の失敗により、Product Advertising API が空のレスポンスを返しました。

この場合、IsValid の値は "True" になります。

Partial request errors (リクエストの部分的なエラー)Product Advertising API は、できる限り多くの情報を返します。例えば、バッチリクエストを使用し、Product Advertising API によって1つのリクエストに対して商品が見つかり、もう1つのリクエストに対しては商品が見つからなかった場合は、見つかった商品に対する全ての情報ともう1つのリクエストに対するエラーメッセージを返します。

上記のいずれかのエラーが発生した場合、IsValid の値は False となり、リクエスト検証セグメントでエラー要素を返します。エラー要素には次のものが含まれます。

次の例は、エラーメッセージを示しています。

<Errors>
  <Error>
    <Code>missing_service_parameter</code>
    <message>Your request is missing the Service parameter. Please add the Service parameter to your request and retry. Valid values for the Service parameter include AWSEcommerceService.</message>
  </Error>
</Errors>

構文的に有効で、処理も成功しているのに、ロジックにエラーが含まれているようなリクエストは解析が困難です。例えば、リクエスト送信者が全てのコンディションの商品を返すつもりで、リクエストで新品の商品だけが返されるデフォルト値を使用したような場合です。

リクエスト検証セグメントの残りの部分は、リクエストで使用されたオペレーションの名前が付いたサブセクションです。この例では、サブセクションの名前は ItemLookupリクエストです。このサブセクションでは、リクエストで使用したパラメータ値がそのまま返されます。これらの値は、リクエストのトラブルシューティングで使用するために返されます。