Как получить данные из базы данных, используя fasthttp? - PullRequest
0 голосов
/ 28 апреля 2020

На их странице github я нашел простой пример, который просто пишет ответ в браузере.

package main

import (
    "fmt"
    "log"

    "github.com/buaazp/fasthttprouter"
    "github.com/valyala/fasthttp"
)

func Index(ctx *fasthttp.RequestCtx) {
    fmt.Fprint(ctx, "Welcome!\n")
}

func Hello(ctx *fasthttp.RequestCtx) {
    fmt.Fprintf(ctx, "hello, %s!\n", ctx.UserValue("name"))
}

func main() {
    router := fasthttprouter.New()
    router.GET("/", Index)
    router.GET("/hello/:name", Hello)

    log.Fatal(fasthttp.ListenAndServe(":8080", router.Handler))
}

Но если я хочу получить строку, int, изображение и что-то еще из моей базы данных и отправить их куда-нибудь (в моем случае это мобильное приложение), как я могу использовать fasthttp? Я новичок в go и http.

Я пытался переписать эти функции для себя, но они не могут иметь операторы возврата.

func InsertUser(ctx *fasthttp.RequestCtx) {
    id, err := databaseWiki.InsertUser(...)
    if err != nil {
        log.Fatal(err)
    }
    fmt.Printf("User %s was added succesfull\n", id)

    fmt.Fprint(ctx, "User " + id + " was added successful\n")
}

func SelectUser(ctx *fasthttp.RequestCtx) {
    id := ctx.UserValue("id").(string)
    u, err := databaseWiki.SelectUser(id)
    if err != nil {
        log.Fatal(err)
    }
    fmt.Printf("ID: %s, Name: %s, Location: %s\n", u.ID, u.Name, u.Location)

    fmt.Fprintf(ctx, "ID: " + u.ID + ", Name: " + u.Name + ", Location: " + u.Location + "\n")
}

func InitRouter() {
    router := fasthttprouter.New()

    router.GET("/insert", InsertUser)
    router.GET("/select/:id", SelectUser)

    log.Fatal(fasthttp.ListenAndServe(":8080", router.Handler))
}
...