Я хотел бы протестировать мой api golang rest с помощью curl.
Команда, которую я использовал для этого:
curl -X POST -H "Content-Type: application/json" -d '{"username":"username","password":"password"}' "http://localhost:8000/api/rooms/signin"
упрощенная версия сервера, которую я написал
package main
import (
"fmt"
"log"
"net/http"
"github.com/gorilla/mux"
)
func main() {
fmt.Println("Listening on port 8000")
router := mux.NewRouter()
router.HandleFunc("/api/rooms/signin", Signin)
log.Fatal(http.ListenAndServe(":8000", router))
}
func Signin(w http.ResponseWriter, r *http.Request) {
if r.Method == "POST" {
fmt.Println("POST")
if err := r.ParseForm(); err != nil {
fmt.Println("parsing failed")
return
}
fmt.Println("parsing success")
fmt.Println(r.Form)
fmt.Println("path: ", r.URL.Path)
fmt.Println("scheme: ", r.URL.Scheme)
username := r.FormValue("username")
password := r.FormValue("password")
fmt.Println(username)
fmt.Println(password)
fmt.Println("username:", r.Form["username"])
fmt.Println("password:", r.Form["password"])
return
}
}
Проблема в том, что я получаю пустую форму - это вывод, который я получаю
Listening on port 8000
POST
parsing success
map[]
path: /api/rooms/signin
scheme:
username: []
password: []
Полагаю, это не правильно, но я не могу думать ни о чем, что я могу делать неправильно. Ожидаемый вывод должен содержать строки «пароль» и «имя пользователя» в качестве вывода сервера golang.