私は2回自分で2回使用しました。 #1よりも優れていますか?私はそれがあなたのAPIがどのように使われているかにかかっていると思います。
私は#2が好きです。これは、いくつかのテストコールでAPIをテストしている開発者に、リクエストで行ったすべてのエラー/ミスの概要を簡単に示しているためです。その要求を有効にする。エラーを1つ1つ返す場合(#1のように)、今度は有効であることを期待して、リクエストを再試行し続けてください。
しかし、#2は開発者にとって非常に便利だと言われていますが、理由は実際にはエンドユーザーには当てはまりません。エンドユーザーは、通常どのように実装されているか気にしません。ソフトウェアが5つのエラーを返す1つの要求を行っているか、それとも1つのエラーをそれぞれ返す5つの後続の要求を行っているか。
クライアントでうまく処理されている限り、エンドユーザーは違いに気づくべきではありません。その処理方法は、クライアントが実際にがであるかどうかによって大きく異なります。
開発のスピードアップに次いで、#2のもう1つの利点は、要求が少なくてすみますが、サーバー負荷が軽減されることです。
I would like to know if anyone went #2 and maybe have any improvements on it so I opened a bounty.
確かになされるべき改良点があります。そのままでは、体内には省略可能なデータがあります。
{
"status": 400,
"error": {
"code": 1 //General bad Request code
"message": "Bad Request",
"developer_message": "Field validation errors."
"more_info": "www.api.com/help/errors/1",
"error_details": {
0: {
"code": 2 // Specific field validation error code
"message": "Field \"x\" is missing from the array structure",
"developer_message": "The request structure must contain the following fields {a,b,c{x,y,z}}",
"more_info": "www.api.com/help/errors/2"
},
1: {
(
"code": 3 // Specific field validation error code
"message": "Incorrect Format for field \"y\"",
"developer_message": "The field \"y\" must be in the form of \"Y-m-d\"",
"more_info": "www.api.com/help/errors/3"
)
}
)
HTTP応答では、ステータスコードは本文には挿入されず、ヘッダーに挿入されます。つまり、ここで"status": 400
と"message": "Bad Request"
を省略することができます。 400は応答のステータスコードであり、400は不正リクエストを意味します。これはHTTP標準であり、レスポンスで説明する必要はありません。また、"developer_message": "Field validation errors."
は重複しています。具体的なエラーはそれぞれ別のエラーに既に含まれているためです。
{
"error": {
"code": 1 //General bad Request code
"more_info": "www.api.com/help/errors/1",
"error_details": {
0: {
"code": 2 // Specific field validation error code
"message": "Field \"x\" is missing from the array structure",
"developer_message": "The request structure must contain the following fields {a,b,c{x,y,z}}",
"more_info": "www.api.com/help/errors/2"
},
1: {
(
"code": 3 // Specific field validation error code
"message": "Incorrect Format for field \"y\"",
"developer_message": "The field \"y\" must be in the form of \"Y-m-d\"",
"more_info": "www.api.com/help/errors/3"
)
}
)
"code": 1 //General bad Request code
"more_info": "www.api.com/help/errors/1",
は、これらの2行は、本当に今はもう意味がありません残し
。 「は、それぞれのエラーは、それが自身のコードと情報のリンクのしているので、彼らはまた、必要とされていないので、我々はこの
{
"error": {
"error_details": {
0: {
"code": 2 // Specific field validation error code
"message": "Field \"x\" is missing from the array structure",
"developer_message": "The request structure must contain the following fields {a,b,c{x,y,z}}",
"more_info": "www.api.com/help/errors/2"
},
1: {
(
"code": 3 // Specific field validation error code
"message": "Incorrect Format for field \"y\"",
"developer_message": "The field \"y\" must be in the form of \"Y-m-d\"",
"more_info": "www.api.com/help/errors/3"
)
}
)
400のステータスコードがすでに誤りがあったことを示したまま、同様にこれらの行を取り除くかもしれませんので、あなたはドン"error": {error details}
をもう一度示す必要があります。エラーが発生していることがわかっているためです。エラーのリストは、単純にルートオブジェクトになることができます。
[
{
"code": 2//Specificfieldvalidationerrorcode
"message": "Field \"x\" is missing from the array structure",
"developer_message": "The request structure must contain the following fields {a,b,c{x,y,z}}",
"more_info": "www.api.com/help/errors/2"
},
{
"code": 3//Specificfieldvalidationerrorcode
"message": "Incorrect Format for field \"y\"",
"developer_message": "The field \"y\" must be in the form of \"Y-m-d\"",
"more_info": "www.api.com/help/errors/3"
}
]
したがって、本文に残っているのは単にエラーの一覧です。
ステータスコードは応答ヘッダーで指定されています。
詳細は応答本文で指定されています。
誰かが#2に行ったことがあるかどうか知りたいのですが、恩恵を受けたので、恩恵を受けました。 – Ski
このAPIは何のために使用され、エラーメッセージの目的は何ですか?それらのメッセージはエンドユーザに表示されるかどうか? 1秒あたりのリクエスト数/分/ 1日のリクエスト数は?あなたの質問に対する答えは、その情報なしでは正確ではありません。質問が広すぎるため、回答がありませんでした。実際はAPIの使用状況によって異なります。 – skobaljic