标签: go-fiber

恐慌接口转换接口{}是float64而不是int64

我收到以下错误

panic: interface conversion: interface {} is float64, not int64
Run Code Online (Sandbox Code Playgroud)

我不确定 float64 来自哪里 我已将类型设置为 int64 但不确定 float64 来自哪里

type AccessDetails struct {
    AccessUuid   string  `json:"access_uuid"`
    Email        string  `json:"email"`
    Refresh      int64    `json:"refresh"`
    Expiry       int64   `json:"expiry"`
    Permission   string  `json:"permission"`
    Scope        string  `json:"scope"`
}

func GetAccessDetails(c *fiber.Ctx) (*AccessDetails, error) {
    ad := &AccessDetails{}

    cookie := c.Cookies("access_token")

    var err error
    token, err := jwt.Parse(cookie, func(token *jwt.Token) (interface{}, error) {
        return []byte(os.Getenv("ACCESS_SECRET")), nil
    })

    if err != nil {
        return nil, err
    }

    payload := …
Run Code Online (Sandbox Code Playgroud)

types go jwt go-fiber

9
推荐指数
1
解决办法
2万
查看次数

Gorm 需要花费大量时间从 Postgres 检索数据

23:28:45 | 200 | 20.294s |       127.0.0.1 | GET     | /api/user/cart/product/all
Run Code Online (Sandbox Code Playgroud)

从购物车产品中,我检索带有购物车产品的购物车。尽管购物车只有一辆购物车和一种产品。但检索起来需要太多时间。

var cart model.Cart
    if err := model.DB.Select([]string{"id"}).Preload("CartProduct", func(db *gorm.DB) *gorm.DB {
        return db.Select([]string{"cart_id", "id", "quantity", "seller_product_id", "seller_product_variation_id"})
    }).Preload("CartProduct.SellerProduct", func(db *gorm.DB) *gorm.DB {
        return db.Select([]string{"id", "name", "slug", "selling_price", "product_price", "offer_price", "offer_price_start", "offer_price_end", "quantity", "next_stock", "description"})
    }).Preload("CartProduct.SellerProduct.SellerProductImage", func(db *gorm.DB) *gorm.DB {
        return db.Select([]string{"image", "seller_product_id"}).Where("display = ?", true)
    }).Preload("CartProduct.SellerProductVariation", func(db *gorm.DB) *gorm.DB {
        return db.Select([]string{"id", "image", "product_price", "selling_price", "quantity", "seller_product_id"})
    }).Preload("CartProduct.SellerProductVariation.SellerProductVariationValues", func(db *gorm.DB) *gorm.DB {
        return db.Select([]string{"id", "name", "description", "attribute_id", "seller_product_variation_id"}) …
Run Code Online (Sandbox Code Playgroud)

go go-gorm go-fiber

5
推荐指数
0
解决办法
257
查看次数

如何获取 jwt auth0 和 go Fiber 的解码令牌?

  1. 我使用 next.js auth0 和自定义 golang api 后端,但在后端获取解码令牌时遇到问题。
  2. 在前端方面,我遵循了本教程 - https://auth0.com/docs/quickstart/webapp/nextjs/01-login
  3. 我成功地将 accessToken 发送到我的后端 API
  4. 在后端,我遵循了本教程 - https://auth0.com/docs/quickstart/backend/golang/01-authorization
  5. 中间件已成功验证令牌

auth0 实现的中间件示例

func EnsureValidToken(next http.Handler) http.Handler {
    // EnsureValidToken is a middleware that will check the validity of our JWT.
    err := godotenv.Load()
    if err != nil {
        log.Fatal("Error loading .env file")
    }
    issuerURL, err := url.Parse("https://" + os.Getenv("AUTH0_DOMAIN") + "/")
    if err != nil {
        log.Fatalf("Failed to parse the issuer url: %v", err)
    }

    provider := jwks.NewCachingProvider(issuerURL, 5*time.Minute)

    jwtValidator, err := …
Run Code Online (Sandbox Code Playgroud)

go auth0 go-fiber

5
推荐指数
1
解决办法
1187
查看次数

go Fiber中如何动态解析请求体?

我在 go Fiber 中内置了一个 API。我正在尝试动态地将请求正文数据解析为键值对。

众所周知,光纤具有context.Body()执行context.Bodyparser()此操作的方法,但我找不到任何适当的示例来使用这些方法动态执行此操作。

例如:

func handler(c *fiber.Ctx) error {
    req := c.Body()
    fmt.Println(string(req))
    
    return nil
}
Run Code Online (Sandbox Code Playgroud)

输出:

key=value&key2=value2&key3&value3
Run Code Online (Sandbox Code Playgroud)

我正在寻找的是一个动态 json,例如:

key=value&key2=value2&key3&value3
Run Code Online (Sandbox Code Playgroud)

go go-fiber

4
推荐指数
1
解决办法
5317
查看次数

在 gofiber POST 请求中,如何解析请求正文?

如果我将 JSON 数据发布到 gofiber 中的 /post route,我将如何读取和更改这些值:

{
    "name" : "John Wick"
    "email" : "johnw@gmail.com"
}
Run Code Online (Sandbox Code Playgroud)
app.Post("/post", func(c *fiber.Ctx) error {
    //read the req.body here
    name := req.body.name
    return c.SendString(name)
}
Run Code Online (Sandbox Code Playgroud)

post http go go-fiber

3
推荐指数
2
解决办法
1555
查看次数

用光纤发送空响应

我正在构建一个 API,如果大多数响应是这样的,我不知道如何返回空响应:

func GetEntityInstance(c *fiber.Ctx) error {

    ...

    return c.Status(fiber.StatusCreated).JSON(fiber.Map{
        "id_created": new_id,
    })
}
Run Code Online (Sandbox Code Playgroud)

如何发送空正文响应?

rest go go-fiber

3
推荐指数
1
解决办法
2066
查看次数

我如何在golang中验证rest api请求的主体结构

例如,我试图确保发布请求的正文包含正文的准确结构,如果不是,则应抛出错误

例如我有以下功能

func UpdatePassword(c *fiber.Ctx) error {

    type UpdatePasswordData struct {
        Password  string `json:"password" form:"password"`
        NewPassword string `json:"new_password" form:"new_password"`
        NewPasswordConfirm string `json:"new_password_confirm" form:"new_password_confirm"`
    }
    
    data := UpdatePasswordData{}

    if err := c.BodyParser(&data); err != nil {
        return err
    }

    var user models.User
    
    if data.NewPassword != data.NewPasswordConfirm {
        c.Status(400)
        return c.JSON(fiber.Map{
            "message": "passwords do not match",
        })
    }

    email, _ := middlewares.GetUserEmail(c)

    newPassword := models.HashPassword(data.NewPassword)

    database.DB.Model(&user).Select("Password").Where("email = ?", email).Updates(map[string]interface{}{"Password": newPassword})

    return c.JSON(user)
}
Run Code Online (Sandbox Code Playgroud)

POST 请求应该寻找具有此结构的正文

{
    "password": "oldpassword",
    "new_password": "newpassword",
    "new_password_confirm": "newpassword", …
Run Code Online (Sandbox Code Playgroud)

go go-fiber

3
推荐指数
1
解决办法
7994
查看次数

有了 Fiber 的上下文,我如何迭代多个文件?

当我收到post包含要上传到服务器的文件列表的请求时,如果我通过以下方式知道该文件的名称,我可以获取特定文件

c.FormFile("filename")

但是,如果不提前知道文件名,我将如何迭代该列表中的文件呢?我没有看到context文档中列出的仅提供文件列表的方法。

go go-fiber

3
推荐指数
1
解决办法
2170
查看次数

具有 React 前端的 golang Fiber 的 CORS 错误

我正在使用 golang 光纤服务器,设置如下:

package main

import (
    "go-auth/database"
    "go-auth/routes"

    "github.com/gofiber/fiber/v2"
    "github.com/gofiber/fiber/v2/middleware/cors"
)

func main() {
    database.Connect()
    app := fiber.New()

    routes.Setup(app)

    app.Use(cors.New(cors.Config{
        AllowHeaders:     "Origin, Content-Type, Accept, Content-Length, Accept-Language, Accept-Encoding, Connection, Access-Control-Allow-Origin",
        AllowOrigins:     "*",
        AllowCredentials: true,
        AllowMethods:     "GET,POST,HEAD,PUT,DELETE,PATCH,OPTIONS",
    }))
    app.Listen(":3800")
}
Run Code Online (Sandbox Code Playgroud)

我通过 React fetch 调用它:

    const response = await fetch('http://127.0.0.1:3800/api/register', {
        method: 'POST',
        headers: {
            'Content-Type': 'application/json'
        },
        body: JSON.stringify({
            name,
            email,
            password
        })
    }).then(response => response.json());
    console.log(response);
Run Code Online (Sandbox Code Playgroud)

难道我做错了什么?服务器端已禁用 CORS。这是我得到的错误:

Access to fetch at 'http://127.0.0.1:3800/api/register' from origin 'http://localhost:3000' has been blocked by …
Run Code Online (Sandbox Code Playgroud)

go reactjs go-fiber

3
推荐指数
1
解决办法
4456
查看次数

Go:客户端已断开连接

我加入 Gophers 团队已经几周了。到目前为止,一切都很好。我开始了一个新项目,使用Fiber Web 框架来构建后端 API。

我使用MongoDB作为我的数据库。

数据库/db.go

package database

import (
    "context"
    "log"
    "time"

    "go.mongodb.org/mongo-driver/mongo"
    "go.mongodb.org/mongo-driver/mongo/options"
    "go.mongodb.org/mongo-driver/mongo/readpref"
)

var DB *mongo.Database

// InitMongo : Initialize mongodb...
func connectToMongo() {
    log.Printf("Initializing database")

    client, err := mongo.NewClient(options.Client().ApplyURI("mongodb://localhost:27017"))
    if err != nil {
        log.Fatal("Could not able to connect to the database, Reason:", err)
    }
    ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)

    err = client.Connect(ctx)
    if err != nil {
        log.Fatal("Context error, mongoDB:", err)
    }

    //Cancel context to avoid memory leak
    defer …
Run Code Online (Sandbox Code Playgroud)

go mongodb go-fiber

2
推荐指数
1
解决办法
3626
查看次数

标签 统计

go ×10

go-fiber ×10

auth0 ×1

go-gorm ×1

http ×1

jwt ×1

mongodb ×1

post ×1

reactjs ×1

rest ×1

types ×1