最近发现不少小伙伴都对Golang很感兴趣,所以今天继续给大家介绍Golang相关的知识,本文《Go Echo:POST 方法给出错误“方法不允许”》主要内容涉及到等等知识点,希望能帮到你!当然如果阅读本文时存在不同想法,可以在评论中表达,但是请勿使用过激的措辞~
问题内容使用 echo 构建一个应用程序并基本上创建了一些路线。 get 工作正常,但 post 给我错误: 不太明白这里的错误出在哪里。
{...."method":"get","uri":"/addperson", message=不允许的方法","...."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方法
e.POST("/addPerson", addPerson)
你可以使用postman使用post方法来命中api,不要使用浏览器
如果你在echo中使用post注册路由,它只会在该路径上注册post方法。但看来你已经明白了那条路。
您可以使用 e.get()
。
今天关于《Go Echo:POST 方法给出错误“方法不允许”》的内容介绍就到此结束,如果有什么疑问或者建议,可以在编程网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!