Как правильно получить сообщение в json после отправки формы, используя golang. Я сегодня впервые попробую golang.
Вот что я пытаюсь достичь с помощью golang:
Например, в php я могу отобразить / распечатать сообщение json после того, как пользователь отправил форму, а затем получить доступ к нему из внешнего интерфейса
Например.
if($everything == 'ok'){
$messages = [
'message' => 'User Registered successfully'
];
echo json_encode($messages);
exit();
}
Пожалуйста, как мне сделать это с Голангом.
Приведенный ниже код отлично работает, вставляя записи в базу данных. После успешной вставки в приведенном ниже коде отображается сообщение об успехе, и все работает нормально.
res.Write([]byte("User Registered successfully!" +username))
Вот мой вопрос:
Как получить ответ json об успешном сообщении, чтобы я мог получить к нему доступ из своего интерфейса, как в приведенном выше коде php.
Я пытался
messageJson := `{"message": "User Registered successfully"}`
jsonresult_send := json.Marshal(messageJson)
return jsonresult_send
Но отображается ошибка слишком много аргументов для возврата
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)
}