これはPromisesの悪用のように聞こえるかもしれませんが、私の使用例です。HTTP 503応答がプロミスを拒否するのを防ぐ
私はOAS(Swagger)ファイルに保存されているAPI定義を検証するNodeJSベースのツールを作成しています。このタスクの一部は、「ホスト」プロパティーと「ベースパス」プロパティーを「paths」プロパティーにリストされている各エンドポイント名と連結して構成されたエンドポイントの妥当性を検査することです。
私はこのライン
var request = require('request')
var Promise = require('promise')
// Wrap the HTTP HEAD request in a promise
request.head = Promise.denodeify(request.head)
私はので、私はHTTPのHEADリクエストを使用していますを使用して、標準の要求 "ライブラリをラップするNodeJSライブラリ「約束」を使用しています実際にAPIを呼び出すことには興味がありません.OASファイルに表示されているURLが有効な宛先を指していることを確認したいだけです。
これは、404(見つからない)と410(終了)を除き、ほぼすべての応答ステータスコードが受け入れられることを意味します。
しかし、HTTP 503(サービスが利用できない)応答の場合、 'request' NodeJSライブラリはこれをエラーとして報告し、request.head()呼び出しを拒否するPromiseを呼び出します。
APIを実装できる方法が幅広いため、確認しているURLの背後にあるAPI管理レイヤーがHTTP HEADリクエストを明示的にブロックしたい場合は、HTTP 503ではなくHTTP 503で応答することができます予想されるHTTP 405(メソッドが許可されていない)。また、APIがサンドボックス化されている場合は、HTTP 503が予期されるステータスコードになります。
どちらの方法でも、HTTP 503は、このURLが実際には有効であることを示していますが、これはおそらく許可されていないHTTPメソッドを使用して呼び出されました。
「プロミスを拒否する」とは、悪用(おそらく不可能)だと思うので、私はHTTPリクエストを自分で処理しなければならない可能性が残っています。
誰でも良いアイデアがありますか?
おかげ
クリスW
グレート、そのためのおかげで多くのことを。 –