php curl json mysql_php中 curl模拟post 发送json并接收json

客户端curl模拟提交代码.

function http($url, $data = NULL, $json = false)

{

$curl = curl_init();

curl_setopt($curl, CURLOPT_URL, $url);

curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);

curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);

if (!empty($data)) {

if($json && is_array($data)){

$data = json_encode( $data );

}

curl_setopt($curl, CURLOPT_POST, 1);

curl_setopt($curl, CURLOPT_POSTFIELDS, $data);

if($json){ //发送JSON数据

curl_setopt($curl, CURLOPT_HEADER, 0);

curl_setopt($curl, CURLOPT_HTTPHEADER,

array(

'Content-Type: application/json; charset=utf-8',

'Content-Length:' . strlen($data))

);

}

}

curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

$res = curl_exec($curl);

$errorno = curl_errno($curl);

if ($errorno) {

return array('errorno' => false, 'errmsg' => $errorno);

}

curl_close($curl);

return json_decode($res, true);

}

参数说明:$url: 服务器接收处理url$data: 数组形式的post数据$json: 是否以json方式提交(1: 是, 0:否)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以给你一个简单的示例代码,使用Gin框架接收JSON请求,并对MySQL数据库进行增删改查操作,并返回相应的JSON数据。 首先,你需要确保你的环境已经安装了Gin和MySQL的驱动程序。你可以使用以下命令来安装它们: ``` go get -u github.com/gin-gonic/gin go get -u github.com/go-sql-driver/mysql ``` 接下来,我们将创建一个名为main.go的文件,作为我们的入口文件。在这个文件,我们将创建一个Gin路由,并定义一些处理程序,用于处理不同的请求。 ```go package main import ( "database/sql" "fmt" "log" "net/http" "github.com/gin-gonic/gin" _ "github.com/go-sql-driver/mysql" ) type User struct { ID int `json:"id"` Name string `json:"name"` Age int `json:"age"` } func main() { // 连接 MySQL 数据库 db, err := sql.Open("mysql", "user:password@tcp(127.0.0.1:3306)/database") if err != nil { log.Fatal(err) } defer db.Close() // 测试数据库连接 err = db.Ping() if err != nil { log.Fatal(err) } // 创建 Gin 路由 r := gin.Default() // 添加处理程序 r.POST("/users", addUser(db)) r.GET("/users/:id", getUser(db)) r.PUT("/users/:id", updateUser(db)) r.DELETE("/users/:id", deleteUser(db)) // 启动 HTTP 服务器 err = r.Run(":8080") if err != nil { log.Fatal(err) } } // 处理添加用户请求 func addUser(db *sql.DB) gin.HandlerFunc { return func(c *gin.Context) { var user User err := c.BindJSON(&user) if err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) return } result, err := db.Exec("INSERT INTO users(name, age) VALUES(?, ?)", user.Name, user.Age) if err != nil { c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) return } id, err := result.LastInsertId() if err != nil { c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) return } user.ID = int(id) c.JSON(http.StatusOK, user) } } // 处理获取用户请求 func getUser(db *sql.DB) gin.HandlerFunc { return func(c *gin.Context) { id := c.Param("id") var user User err := db.QueryRow("SELECT id, name, age FROM users WHERE id = ?", id).Scan(&user.ID, &user.Name, &user.Age) if err != nil { c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) return } c.JSON(http.StatusOK, user) } } // 处理更新用户请求 func updateUser(db *sql.DB) gin.HandlerFunc { return func(c *gin.Context) { id := c.Param("id") var user User err := c.BindJSON(&user) if err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) return } _, err = db.Exec("UPDATE users SET name = ?, age = ? WHERE id = ?", user.Name, user.Age, id) if err != nil { c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) return } c.JSON(http.StatusOK, user) } } // 处理删除用户请求 func deleteUser(db *sql.DB) gin.HandlerFunc { return func(c *gin.Context) { id := c.Param("id") _, err := db.Exec("DELETE FROM users WHERE id = ?", id) if err != nil { c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) return } c.JSON(http.StatusOK, gin.H{"message": fmt.Sprintf("User %s deleted", id)}) } } ``` 在这个示例代码,我们创建了一个名为User的结构体,用于存储用户数据。我们还定义了四个处理程序,用于处理添加、获取、更新和删除用户的请求。这些处理程序都接受一个指向MySQL数据库的指针,以便它们可以对数据库进行操作。我们在每个处理程序使用Gin的JSON绑定方法来解析请求的JSON数据,并使用MySQL的Exec和QueryRow方法来执行SQL语句。 最后,我们使用Gin的路由方法将这些处理程序添加到路由,并使用Run方法启动HTTP服务器。你可以使用以下命令来编译和运行这个示例代码: ``` go build -o app main.go ./app ``` 现在,你可以使用任何HTTP客户端向你的应用程序发送JSON请求,以进行增删改查操作。例如,你可以使用curl命令发送一个添加用户的请求: ``` curl -X POST -H "Content-Type: application/json" -d '{"name": "Alice", "age": 25}' http://localhost:8080/users ``` 应用程序将返回一个包含新创建用户的JSON数据的响应。你还可以使用GET、PUT和DELETE方法来执行其他操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值