내 httpcache를 쓰려고합니다. http 요청을 캐싱하기위한 diskv 값 필드 (예상 [] 바이트)의 map [string] interface {} 데이터 저장
내 응답
는 다음과 같이 :response := make(map[string]interface{})
w.WriteHeader(http.StatusOK)
response["status"] = true
response["token"] = someTokenString
response["data"] = someStructSlice // etc
json.NewEncoder(w).Encode(response)
내 계획은 지금은 URL 경로와 동일한 키 설정 곳 (https://github.com/peterbourgon/diskv를 사용하는 것입니다 나는 내가 길을 잘못하고 있어요 생각하지만 이건 내 방법입니다 + 사용자 이름/토큰 필요시). 그런 다음 응답 데이터와 동일한 값을 입력하십시오.
문제점이 데이터를 어떻게 저장해야할지 모르겠습니다. dickv는 데이터 형식이 []byte
이고 응답 데이터 형식이 map[string]interface {}
일 때 응답합니다.
변환 방법을 알아 내려 가기 전에 먼저 전문가에게 내가 사용하고 있는지 물어 보았습니다. 올바른 접근법. 그리고 제가 있다면, response
을 dickv 값 ([]byte
)에 저장할 수있는 간단한 방법이 있습니까?
글쎄, 당신은 이미 [] 바이트로 출력되는 JSON으로 인코딩하고 있습니다. 너는 그걸 저장할 수있을거야. 또한 모든 캐시 적중을 디코딩/인코딩하지 않아도되므로 캐시에서 직접 데이터를 제공하면된다는 이점이 있습니다. 내장 된 ['gob' 패키지] (https://golang.org/pkg/encoding/gob/)를 사용할 수도 있습니다. – Adrian
'response'는'encodedJson, err : = json.Marshal (response)'를 사용하여 인코딩되어야한다고 생각하십니까? 그리고 나서'w.Write (encodedJson)'? – fisker
수정하십시오. 그런 다음 동일한 페이로드를 캐시에 쓸 수 있습니다. – Adrian