Go最新AJAX请求(GET、POST、响应JSON)_ajax post json,2024年阿里Golang岗面试必问
package main
import (
"encoding/json"
"fmt"
"log"
"net/http"
)
// 假设这是你的数据模型
type User struct {
Name string `json:"name"`
Age int `json:"age"`
}
// 处理GET请求
func handleGetRequest(w http.ResponseWriter, r *http.Request) {
// 设置响应头
w.Header().Set("Content-Type", "application/json")
// 创建一个示例用户
user := User{Name: "Alice", Age: 30}
// 序列化用户数据为JSON
jsonData, err := json.Marshal(user)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
// 写入响应
w.Write(jsonData)
}
// 处理POST请求
func handlePostRequest(w http.ResponseWriter, r *http.Request) {
var user User
// 解析请求体中的JSON数据
err := json.NewDecoder(r.Body).Decode(&user)
if err != nil {
http.Error(w, err.Error(), http.StatusBadRequest)
return
}
// 设置响应头
w.Header().Set("Content-Type", "application/json")
// 序列化用户数据为JSON
jsonData, err := json.Marshal(user)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
// 写入响应
w.Write(jsonData)
}
func main() {
http.HandleFunc("/get-user", handleGetRequest)
http.HandleFunc("/post-user", handlePostRequest)
log.Fatal(http.ListenAndServe(":8080", nil))
}
这段代码首先定义了一个名为User
的结构体,用于序列化和反序列化JSON数据。然后,它创建了两个处理函数handleGetRequest
和handlePostRequest
来处理HTTP GET和POST请求。handleGetRequest
返回一个JSON格式的用户信息,而handlePostRequest
则接收JSON格式的用户信息,并返回相同的信息。最后,在main
函数中,它设置了服务器监听8080端口,并注册了两个处理函数。
评论已关闭