How to properly get message in json after form submision using golang. Am just trying golang today for the first time.
Here is what am trying to achieve with golang:
In php for instance I can echo/print a json message after user submmitted a form and can then access it from the front end
Eg.
if($everything == 'ok'){
$messages = [
'message' => 'User Registered successfully'
];
echo json_encode($messages);
exit();
}
Please How do I do this with golang.
The code below works fine by inserting records to database. Upon a successful insert, it display a success message in the code below and everything is working fine.
res.Write([]byte("User Registered successfully!" +username))
Here is my qusetion: How do I get json response of the successful message so that I can access it from my front end just like in php code above.
I have tried
messageJson := `{"message": "User Registered successfully"}`
jsonresult_send := json.Marshal(messageJson)
return jsonresult_send
But it displays error too many argument to return
Here is the entire code
package main
import "database/sql"
import _ "github.com/go-sql-driver/mysql"
import "net/http"
import "fmt"
import "encoding/json"
var db *sql.DB
var err error
type MessageInfo struct {
Message string
}
func signupPage(res http.ResponseWriter, req *http.Request) {
if req.Method != "POST" {
http.ServeFile(res, req, "signupjson.html")
return
}
username := req.FormValue("username")
password := req.FormValue("password")
var user string
err := db.QueryRow("SELECT username FROM users WHERE username=?", username).Scan(&user)
switch {
case err == sql.ErrNoRows:
_, err = db.Exec("INSERT INTO users(username, password) VALUES(?, ?)", username, password)
if err != nil {
http.Error(res, "insert error, unable to create your account.", 500)
return
}
res.Write([]byte("User Registered successfully!" +username))
// get json response message
messageJson := `{"message": "User Registered successfully"}`
jsonresult_send := json.Marshal(messageJson)
return jsonresult_send
return
default:
http.Redirect(res, req, "/", 301)
}
}
func homePage(res http.ResponseWriter, req *http.Request) {
http.ServeFile(res, req, "index.html")
}
func main() {
db, err = sql.Open("mysql", "root:@/golang44")
if err != nil {
panic(err.Error())
}
defer db.Close()
err = db.Ping()
if err != nil {
panic(err.Error())
}
http.HandleFunc("/signupjson", signupPage)
http.HandleFunc("/", homePage)
fmt.Println("Listening on 127.0.0.1:8088")
http.ListenAndServe(":8088", nil)
}