web-dev-qa-db-ja.com

ヘッダーパラメーターを使用してHTTPリクエストを送信する方法

私は一般的にjavascriptとWebプログラミングに非常に慣れていないので、これに関していくらか助けが必要です。 javascriptを介して送信し、出力を変数に格納する必要があるHTTPリクエストがあります。呼び出しURLのみを使用してみました。

https://api.fantasydata.net/nfl/v2/JSON/PlayerSeasonStats/2015

ただし、APIキーを送信しなかったため、認証エラーが返され、URL内でそれを行う方法は示されません。 APIキーはパラメーターとしてではなくヘッダーとしてリストされており、それをどうすればよいかわかりません。 XMLHttpRequest()クラスを使用してみましたが、それが何をするのかを正確に理解していないか、動作させることができません。

実際のHTTPリクエスト

GET https://api.fantasydata.net/nfl/v2/JSON/PlayerSeasonStats/2015 HTTP/1.1
Host: api.fantasydata.net
Ocp-Apim-Subscription-Key: ••••••••••••••••••••••••••••••••

キーと一緒にそのリクエストを送信する方法と、JavaScriptで変数として返されるJSONドキュメントを保存する方法を理解する必要があります。

編集:これは私がこれまで持っているものです:

function testingAPI(){
var key = "8a1c6a354c884c658ff29a8636fd7c18";
httpGet("https://api.fantasydata.net/nfl/v2/JSON/PlayerSeasonStats/2015",key    );
alert(xmlHttp.responseText);
var x = 0;
}

function httpGet(theUrl,key)
{
var xmlHttp = new XMLHttpRequest();

xmlHttp.open( "GET", theUrl, false ); // false for synchronous request
xmlHttp.setRequestHeader("Ocp-Apim-Subscription-Key",key);
xmlHttp.send( null );
return xmlHttp.responseText;
}

ありがとうございました!

9
Faraz Ahsan

APIキーがヘッダーとしてリストされていると表示されている場合は、httpリクエストのheadersオプションで設定する必要がありそうです。通常、このようなもの:

headers: {'Authorization': '[your API key]'}

ここに別の例があります 質問

$http({method: 'GET', url: '[the-target-url]', headers: {
  'Authorization': '[your-api-key]'}
});

編集:応答を変数に保存したいのを見ました。この場合、おそらくAJAXを使用します。このようなもの :

$.ajax({ 
   type : "GET", 
   url : "[the-target-url]", 
   beforeSend: function(xhr){xhr.setRequestHeader('Authorization', '[your-api-key]');},
   success : function(result) { 
       //set your variable to the result 
   }, 
   error : function(result) { 
     //handle the error 
   } 
 }); 

私はこれを この質問 から取得しました。仕事中なので、現時点ではテストできませんが、しっかりしています

編集2:この行を使用できるはずです:

headers: {'Authorization': '[your API key]'},

最初の編集のbeforeSend行の代わりに。これはあなたにとってより簡単かもしれません

9
Danny H

独自のCodeとjQueryなしのSlight Change

function testingAPI(){ 
    var key = "8a1c6a354c884c658ff29a8636fd7c18"; 
    var url = "https://api.fantasydata.net/nfl/v2/JSON/PlayerSeasonStats/2015";
    console.log(httpGet(url,key)); 
}


function httpGet(url,key){
    var xmlHttp = new XMLHttpRequest();
    xmlHttp.open( "GET", url, false );
    xmlHttp.setRequestHeader("Ocp-Apim-Subscription-Key",key);
    xmlHttp.send(null);
    return xmlHttp.responseText;
}

ありがとう

1
Shashank