2016-12-24 8 views
0

Я пытаюсь реализовать API в настоящий момент, на первом этапе создается сеанс, и после этого sesson запрашивается с запросом на получение. Иногда я получаю код ответа 304 Not Modified - результаты не были изменены со времени последнего опроса, и мне кажется, что все это случайно. В этом случае я не могу сохранить ответ в структуре Голанга. Это очень расстраивает. У вас есть какие-нибудь идеи, что может быть проблемой? Благодаря!Получение кода 304 после запроса от DB golang

client := &http.Client{Timeout: 10 * time.Second} 
req, err := http.NewRequest("GET", url, nil) 
q := req.URL.Query() 
q.Add("apiKey", apiKey) 
q.Add("sortorder", "asc") 
req.URL.RawQuery = q.Encode() 

if err != nil { 
    panic(err) 
} 
req.Header.Set("ACCEPT", "application/json") 
resp, err := client.Do(req) 
if err != nil { 
    panic(err) 
} 

defer resp.Body.Close() 
if resp.StatusCode == 200{ 
    if err != nil { 
     panic(err) 
    } 
}else{ 
    fmt.Println(resp.StatusCode) 
} 
data, err := ioutil.ReadAll(resp.Body) 

return []byte(data) 

ответ

1

Осуществляют ли сервер также? Или просто клиент? Вы управляете сервером? Если вы этого не сделаете, вам, вероятно, придется обработать 304, не измененный. Было бы неплохо, если бы сервер сказал, что ресурс не был изменен, потому что вы можете коротко закоротить некоторую обработку.

+0

Я просто реализую клиент, используя сторонний сервер. Моя проблема в том, что если я получу 304, у меня нет доступа к телу ответа. Странно то, что если я вручную открою URL-адрес ответа, это приведет меня к правильной структуре json. – donfrigo

0

Хорошо, проблема решена путем ожидания в течение 1 секунды и повторного опроса.