メモリに問題なく Go 上の 1 つのクライアントを介して 2 つの HTTP リクエストを準備するにはどうすればよいですか?
私は次のコードを持っています:
func moduleView(url string) {
var module Module
httpClient := &http.Client{}
moduleId, listHttpResponseCode := findEntity(httpClient, url)
request, _ := http.NewRequest("GET", fmt.Sprintf("%s/api/getById/%s", coreURL, module.ID), nil)
response, _ := httpClient.Do(request)
statusOK := response.StatusCode >= 200 && response.StatusCode < 300
if !statusOK {
fmt.Println("Unable to get by name module: ", response.Status)
} else {
responseBody, _ := ioutil.ReadAll(response.Body)
json.Unmarshal([]byte(strings.TrimSuffix(string(responseBody), "\n")), &module)
fmt.Printf(module)
}
return nil
}
func findEntity(httpClient *http.Client, url string) int {
var module Module
request, _ := http.NewRequest("GET", fmt.Sprintf("%s/api/getByName", url), nil)
response, _ := httpClient.Do(request)
responseBody, _ := ioutil.ReadAll(response.Body)
json.Unmarshal([]byte(strings.TrimSuffix(string(responseBody), "\n")), &module)
statusOK := response.StatusCode >= 200 && response.StatusCode < 300
if !statusOK {
return Module{}, response.StatusCode
}
return module, response.StatusCode
}
両方のリクエストが機能しており、別々に使用してもエラーは発生しません。しかし、両方を一緒に使用しようとすると (一方から ID を取得し、別のデータ要求を実行した後に)、メモリでエラーが発生します。
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x38 pc=0x1334022]
2 つのリクエストに対して 1 つの httpClient を使用する方法についてのアイデアを教えてください。ありがとう