Go Echo:POST 方法给出错误“方法不允许”

使用 echo 构建应用程序并基本上创建了一些路由。GET 的工作正常,但后一个是给我错误: Do not really understand where the error lies here。


{....."method":"GET","uri":"/addPerson", message=Method Not Allowed",".....bytes_in":0,"bytes_out":33}


main.go 片段


    func initEchoServer() {

    e := echo.New()

    e.Use(middleware.Logger())

    e.Use(middleware.Recover())

    // get all persons

    e.GET("/persons", Info)

    // get specific id

    e.GET("/persons/:id", getPerson)


    e.POST("/addPerson", addPerson)

    e.Logger.Fatal(e.Start(viper.GetString("port")))

}


func addPerson(c echo.Context) error {

    ctx := context.Background()

    db, err := sql.Open("postgres", "host=postgres port=5432 user=postgres dbname=postgres password=postgres sslmode=disable")

    if err != nil {

        log.Fatal(err)

    }

    queries := postgres.New(db)

    insertedPerson, err := queries.CreatePersons(ctx, postgres.CreatePersonsParams{

        Firstname: "Mike",

        Lastname:  "Jordan",

    })

    if err != nil {

        log.Errorf("Failed to insert a person %v", err)

        return err

    }

    fmt.Println(insertedPerson)

    return c.JSONPretty(http.StatusOK, insertedPerson, "  ")

}

queries.sql.go 片段


type CreatePersonsParams struct {

    Firstname string

    Lastname  string

}


func (q *Queries) CreatePersons(ctx context.Context, arg CreatePersonsParams) (Person, error) {

    row := q.db.QueryRowContext(ctx, createPersons, arg.Firstname, arg.Lastname)

    var i Person

    err := row.Scan(&i.ID, &i.Firstname, &i.Lastname)

    return i, err

}


梵蒂冈之花
浏览 122回答 2
2回答

潇湘沐

你在路由器中使用 post 方法e.POST("/addPerson", addPerson)您可以使用邮递员使用 POST 方法访问 API,不要使用浏览器

凤凰求蛊

如果你在回显中使用 POST 注册路由,它只会在该路径上注册 POST 方法。但似乎你得到了那条路。你可以使用e.GET()。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go