Go Echo:POST 方法给出错误 "Method not allowed"
Go Echo: POST Method gives Error "Method not allowed"
使用 echo 构建应用程序并基本上创建了一些路由。
GET 的工作正常,但是 post 的给我错误:
不太明白这里的错误在哪里。
{....."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
}
如果你在回显中使用 POST 注册路由,它只会在该路径上注册 POST 方法。但似乎你得到了那条路。
您可以使用 e.GET()
.
您在路由器中使用 post 方法
e.POST("/addPerson", addPerson)
您可以使用 postman 来点击 API 使用 POST 方法,不要使用浏览器
使用 echo 构建应用程序并基本上创建了一些路由。 GET 的工作正常,但是 post 的给我错误: 不太明白这里的错误在哪里。
{....."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
}
如果你在回显中使用 POST 注册路由,它只会在该路径上注册 POST 方法。但似乎你得到了那条路。
您可以使用 e.GET()
.
您在路由器中使用 post 方法
e.POST("/addPerson", addPerson)
您可以使用 postman 来点击 API 使用 POST 方法,不要使用浏览器