承認リクエストにベアラートークンを使用して、APIにGETリクエストを行う必要があります。 Goでこれを行うにはどうすればよいですか?次のコードがありますが、成功していません。
package main
import (
"io/ioutil"
"log"
"net/http"
)
func main() {
url := "https://api.globalcode.com.br/v1/publico/eventos"
resp, err := http.Get(url)
resp.Header.Add("Bearer", "token")
if err != nil {
log.Println("Erro ao realizar request.\n[ERRO] -", err)
}
body, _ := ioutil.ReadAll(resp.Body)
log.Println(string([]byte(body)))
}
HTTPクライアントヘッダー、リダイレクトポリシー、およびその他の設定を制御するには、クライアントを作成します。
package main
import (
"io/ioutil"
"log"
"net/http"
)
func main() {
url := "https://api.globalcode.com.br/v1/publico/eventos"
// Create a Bearer string by appending string access token
var bearer = "Bearer " + <ACCESS TOKEN HERE>
// Create a new request using http
req, err := http.NewRequest("GET", url, nil)
// add authorization header to the req
req.Header.Add("Authorization", bearer)
// Send req using http Client
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
log.Println("Error on response.\n[ERRO] -", err)
}
body, _ := ioutil.ReadAll(resp.Body)
log.Println(string([]byte(body)))
}
通常、クライアントのトランスポートには内部状態(キャッシュTCP接続)があるため、クライアントは必要に応じて作成する代わりに再利用する必要があります。クライアントは複数のゴルーチンで同時に使用しても安全です。
クライアントはRoundTripper(Transportなど)よりも高レベルであり、さらにCookieやリダイレクトなどのHTTP詳細を処理します。
Client and Transport の詳細については、net/httpパッケージのgolang仕様を確認してください
BearerトークンをAPIに渡すために、client.CheckRedirect関数(以下を参照)を追加する必要がありました。
bearer := "Bearer " + token
req, err := http.NewRequest("GET", url, bytes.NewBuffer(nil))
req.Header.Set("Authorization", bearer)
req.Header.Add("Accept", "application/json")
client := &http.Client{}
client.CheckRedirect = func(req *http.Request, via []*http.Request) error {
for key, val := range via[0].Header {
req.Header[key] = val
}
return err
}
resp, err := client.Do(req)
if err != nil {
log.Println("Error on response.\n[ERRO] -", err)
} else {
defer resp.Body.Close()
data, _ := ioutil.ReadAll(resp.Body)
fmt.Println(string(data))
}
}
次のような基本的なリクエストを実行するための超基本的なライブラリを作成しました。
package main
import (
request "github.com/alessiosavi/Requests"
)
func main(){
// Create a key-value list of headers
headers := request.CreateHeaderList(`Accept`, `application/json`, "Authorization", "Bearer "+auth.IAMToken)
resp :=request.SendRequest(`http://your_site.com`, `GET`, headers, nil))
}
ここでrequest
実装を見つけることができます:
https://github.com/alessiosavi/Requests/blob/e7ca66bde738b6224fba2b6f146a8dbee67d3323/Requests.go
ここで、Bearer Authおよびその他の認証タイプにライブラリを使用する方法を見つけることができます。
https://github.com/alessiosavi/GoCloudant/blob/a8ad3a7990f04ea728bb327d6faea6af3e5455ca/cloudant.go