Меня недавно познакомили с чудесами языка, известного как go . Я поставил перед собой задачу написать RESTful API с использованием GoLang и Google Datastore. Я могу извлечь данные из Datastore и распечатать их на консоли, используя fmt.Println
, однако проблема возникает, когда я пытаюсь использовать данные из Datastore и передать их в http.Handler . * 1006. *
Мне было интересно, может ли кто-нибудь сообщить мне, где я иду не так, или даже указать мне правильное направление.
Вот что я сделал до сих пор
package main
import (
"log"
"fmt"
"context"
"net/http"
// "encoding/json"
"cloud.google.com/go/datastore"
)
type Item struct {
Id string `datastore:"id"`
Name string `datastore:"title"`
View int `datastore:"views"`
Brand string `datastore:"brand"`
id int64 // interger from "Name/ID" fild in datastore entities list
}
func main() {
http.HandleFunc("/", ListTasks)
http.ListenAndServe(":8080", nil)
}
//func ListTasks(w http.ResponseWriter, r *http.Request) ([]*Item, error) {
func ListTasks(w http.ResponseWriter, r *http.Request) {
ctx := context.Background()
client, err := datastore.NewClient(ctx, "my-client")
if err != nil {
log.Fatalln(err)
}
var tasks []*Item
query := datastore.NewQuery("my-query")
keys, err := client.GetAll(ctx, query, &tasks)
if err != nil {
return nil, err
}
for i, key := range keys {
tasks[i].id = key.ID
}
return tasks, nil
}
Я также изучил http Wrappers, но не знаю, нужно ли использовать обертку на 100% или я просто добавляю больше на свою тарелку.