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)
}
相关推荐
明月_清风8 分钟前
🔐 Solidity 完全指南:关键语法解析与智能合约中的核心作用
后端·web3
geovindu25 分钟前
CSharp: Iterative Algorithms
开发语言·后端·算法·c#·.net·迭代算法
雪隐1 小时前
AI股票小助手10-我用代码管住自己的手:一个普通人的市场观察笔记
前端·人工智能·后端
艾斯特_1 小时前
混合检索与重排:提升召回与排序质量
后端·python·ai
Ai拆代码的曹操2 小时前
RocketMQ 消息堆积排查实战:从 20 个消费者线程卡死到 rebalance 死亡螺旋
后端·rocketmq
吃饱了得干活2 小时前
@Transactional 又失效了?把这 8 个坑全填了!
java·后端·spring
颜进强2 小时前
从零搭建私人 RAG 知识库:让项目决策真正“可检索、可追溯”
前端·后端·ai编程
颜进强2 小时前
Embedding 模型介绍:热门模型对比与应用场景
前端·后端·ai编程
颜进强2 小时前
LanceDB 基础使用:用 TypeScript 完成第一次向量检索
前端·后端·ai编程
武子康2 小时前
低延迟不是更快地猜:EOU / Barge-in / Turn Protocol 必须统一(4 种结束 + Generation Fencing + 9 类可复现场景)
人工智能·后端·llm