일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 실행권한
- ubuntu
- postgresql
- nohup
- rethinkdb
- perfect
- sshpass
- ftp
- centos
- STF
- PYTHON
- SWIFT
- kitura
- nGrinder
- Jupyter Notebook
- postgres
- ssh
- Materials
- nmap
- STF_PortForwarding
- appium server
- insert
- create table
- appium
- Jupyter
- mysql
- port forwarding
- openpyxl
- GoCD
- 28015
- Today
- Total
don't stop believing
Another example: query + post form 본문
지난 Posting에 이어 하나 더 해보겠습니다.
html 페이지의 form tag 중 action의 값인 url에 query string이 붙어있는 경우 입니다.
https://github.com/gin-gonic/gin#another-example-query--post-form
<html> <head> <title>Tongchun's go gin</title> </head> <body> <form action="http://localhost:8080/form_post_with_querystring?id=dejavu&page=34" method="POST"> message: <input type="text" name="message"> nick: <input type="text" name="nick"> <input type="submit" value="Submit"> </form> </body> </html>
form의 action으로 넘기는 url에 주렁주렁 query string이 달려 있습니다.
http://localhost:8080/form_post_with_querystring?id=dejavu&page=34
이럴때 query string의 parameter와 form tag로 전달되는 post 데이터를 같이 받는 방법입니다.
package main import ( "strconv" "github.com/gin-gonic/gin" ) func setupRouter() *gin.Engine { // Disable Console Color // gin.DisableConsoleColor() r := gin.Default() r.POST("/form_post_with_querystring", formPost) return r } func formPost(c *gin.Context) { id := c.Query("id") strPage := c.DefaultQuery("page", "0") intPage, _ := strconv.Atoi(strPage) message := c.PostForm("message") nick := c.DefaultPostForm("nick", "anonymous") headerType := c.GetHeader("Content-Type") c.JSON(200, gin.H{ "status": "posted", "message": message, "nick": nick, "header-content-type": headerType, "id": id, "page": intPage, }) } func main() { r := setupRouter() // Listen and Server in 0.0.0.0:8080 r.Run(":8080") }
우선 주의해야 할 사항은 QueryString의 parameter와 Form tag의 post 데이터를 같이 받으려면 header의 Content-Type은 "application/x-www-form-urlencoded"여야 합니다.
go를 실행하고 데이터를 보내 보겠습니다.
$ go run server.go [GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached. [GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production. - using env: export GIN_MODE=release - using code: gin.SetMode(gin.ReleaseMode) [GIN-debug] POST /form_post_with_querystring --> main.formPost (3 handlers) [GIN-debug] Listening and serving HTTP on :8080
html 페이지를 열고 데이터를 보내보겠습니다.
QueryString의 데이터와 Form tag의 Post 데이터가 모두 확인되었습니다.
Postman으로보내려면 아래와 같이 실행합니다.
여기까지 Form tag의 Post 데이터와 QueryString 모두 확인하는 방법이었습니다.
'Golang > Gin' 카테고리의 다른 글
Upload files (0) | 2019.02.27 |
---|---|
Map as querystring or postform parameters (0) | 2019.02.27 |
Multipart/Urlencoded Form (1) | 2019.02.14 |
Querystring parameters (0) | 2019.02.14 |
Parameters in path (0) | 2019.02.13 |