Golang框架HTTP客户端框架zdpgo_resty发送表单请求

核心代码

这里通过字典传递了一个简单的表单数据。

发送的是POST请求。

go 复制代码
resp, err := client.R().
		SetFormData(map[string]string{
			"username": "jeeva",
			"password": "mypass",
		}).
		Post("http://127.0.0.1:3333/login")
	fmt.Println(resp, err)

服务端

go 复制代码
package main

import (
	"encoding/json"
	"fmt"
	"net/http"
	"zdpgo_chi"
	"zdpgo_chi/middleware"
)

func main() {
	r := zdpgo_chi.NewRouter()
	r.Use(middleware.RequestID)
	r.Use(middleware.RealIP)
	r.Use(middleware.Logger)
	r.Use(middleware.Recoverer)

	r.Post("/login", func(w http.ResponseWriter, r *http.Request) {
		r.ParseForm()

		username := r.Form.Get("username")
		password := r.Form.Get("password")
		search := r.Form.Get("search")
		fmt.Println(username, password, search)

		data := map[string]interface{}{
			"username": username,
			"password": password,
			"search":   search,
		}

		jsonData, err := json.Marshal(data)
		if err != nil {
			w.Write([]byte(err.Error()))
			return
		}
		w.Write(jsonData)
	})

	http.ListenAndServe(":3333", r)
}

客户端

go 复制代码
package main

import (
	"fmt"
	"net/url"
	"zdpgo_resty"
)

func main() {
	client := zdpgo_resty.New()

	// 使用表单登录
	resp, err := client.R().
		SetFormData(map[string]string{
			"username": "jeeva",
			"password": "mypass",
		}).
		Post("http://127.0.0.1:3333/login")
	fmt.Println(resp, err)

	// 传递数组
	criteria := url.Values{
		"search": []string{"book", "glass", "pencil"},
	}
	resp, err = client.R().
		SetFormData(map[string]string{
			"username": "jeeva",
			"password": "mypass",
		}).
		SetFormDataFromValues(criteria).
		Post("http://127.0.0.1:3333/login")
	fmt.Println(resp, err)
}
相关推荐
神奇小汤圆5 分钟前
Java vs Go:哈希冲突解决之道,为什么一个用红黑树,一个用桶?
后端
神奇小汤圆7 分钟前
得物二面:Redis 中某个 Key 访问量特别大怎么办?我:Redis 能顶得住... 生瓜蛋子 生瓜蛋子
后端
掘金者阿豪9 分钟前
Spring Data JPA 接入金仓数据库:少写代码,多干活
前端·后端
Moment13 分钟前
AI 时代,为什么全栈项目越来越离不开 Monorepo 和 TypeScript
前端·javascript·后端
神奇小汤圆28 分钟前
字节一面凉了!被问接口超时频繁,线程池该怎么优化?面试官:你管这叫高并发优化?
后端
Jenlybein1 小时前
用 uv 替代 conda,速度飙升(从 0 到 1 开始使用 uv)
后端·python·算法
用户298698530141 小时前
Java 提取 HTML 文本内容:两种轻量级实现方案对比
java·后端
程序边界1 小时前
行标识符的秘密:OID和ROWID的技术演进之路
后端
golang学习记1 小时前
Go 结构化日志新宠:`slog` 入门与实战指南(附避坑秘籍)
后端
tltwuyulw1 小时前
Java的函数式编程(三)
java·后端