0

メモリに問題なく 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 を使用する方法についてのアイデアを教えてください。ありがとう

4

0 に答える 0