前端将数据发送到web端数据接收方式

前端将数据发送到web端数据接收方式

这里是在第三方包下获取的方式github.com/julienschmidt/httprouter

通过url请求解析数据

例如url请求为/api/v1.0/smscode/18311111111

添加路由

rou.GET("/api/v1.0/smscode/:mobile", handler.GetSmscd)

路由实现

func GetSmscd(w http.ResponseWriter, r *http.Request,ps httprouter.Params) {
	//获取手机号 byname
	mobile := ps.ByName("mobile")
	...
}
url请求携带参数

例如url请求为/api/v1.0/smscode/111?text=abc

?后面的参数通过 & 作为分隔,每个键值对 以 = 进行划分,用来传递不太重要的数据

路由实现

//获取get请求的参数,类型是map[string][]string
value := r.URL.Query()["text"][0]
post 密文传输

通过json传输,通过json解析到 map当中获取数据

func PostLogin(w http.ResponseWriter, r *http.Request,ps httprouter.Params) {
	// decode the incoming request as json
	//接受 前端发送过来数据的
	var request map[string]interface{}
	// 将前端 json 数据解析到 map当中
	if err := json.NewDecoder(r.Body).Decode(&request); err != nil {
		http.Error(w, err.Error(), 500)
		return
	}

	//校验数据 
	if request["mobile"].(string) == "" ||request["password"].(string) == ""{
		//准备返回给前端的map
		response := map[string]interface{}{
			"errno": utils.RECODE_DATAERR,
			"errmsg": utils.RecodeText(utils.RECODE_DATAERR),
		}
		// encode and write the response as json
		//设置返回数据的格式
		w.Header().Set("Content-Type","application/json")
		//将map转化为json 返回给前端
		if err := json.NewEncoder(w).Encode(response); err != nil {
			http.Error(w, err.Error(), 500)
			return
		}

		return
	}
    ...
}
cookie默认携带在请求中
func DeleteSession(w http.ResponseWriter, r *http.Request,ps httprouter.Params) {
	fmt.Println("退出登陆  DeleteSession   /api/v1.0/session")

	//从cookie当中获取sessionid
	cookie ,err :=r.Cookie("ihomelogin")
	if err!=nil || cookie.Value ==""{

		response := map[string]interface{}{
			"errno": utils.RECODE_SESSIONERR,
			"errmsg": utils.RecodeText(utils.RECODE_SESSIONERR),
		}
		// encode and write the response as json
		//设置返回数据的格式
		w.Header().Set("Content-Type","application/json")
		//将map转化为json 返回给前端
		if err := json.NewEncoder(w).Encode(response); err != nil {
			http.Error(w, err.Error(), 500)
			return
		}
		return
	}
    ...
}
通过form表单进行传输

服务端接收数据

func (r *Request) FormValue(key string) string

接收文件

func (r *Request) FormFile(key string) (multipart.File, *multipart.FileHeader, error)

func PostAvatar(w http.ResponseWriter, r *http.Request,ps httprouter.Params) {
	fmt.Println(" 上传头像  PostAvatar  /api/v1.0/user/avatar ")

	//接受前端发送过来的二进制 图片数据

	File, FileHeader, err := r.FormFile("avatar")
	if err !=nil{
		response := map[string]interface{}{
			"errno": utils.RECODE_IOERR,
			"errmsg": utils.RecodeText(utils.RECODE_IOERR),
		}
		// encode and write the response as json
		//设置返回数据的格式
		w.Header().Set("Content-Type","application/json")
		//将map转化为json 返回给前端
		if err := json.NewEncoder(w).Encode(response); err != nil {
			http.Error(w, err.Error(), 500)
			return
		}
		return
	}

	/*TODO  可以进行 文件类型判断 */
	//获取 文件的基本信息
	fmt.Println("文件名",FileHeader.Filename)
	fmt.Println("文件大小",FileHeader.Size)

	//创建1个二进制的空间
	filebuffer :=make([]byte,FileHeader.Size)

	//把接受或来的文件 读如二进制空间
	_ ,err = File.Read(filebuffer)
	if err!=nil{
		response := map[string]interface{}{
			"errno": utils.RECODE_IOERR,
			"errmsg": utils.RecodeText(utils.RECODE_IOERR),
		}
		// encode and write the response as json
		//设置返回数据的格式
		w.Header().Set("Content-Type","application/json")
		//将map转化为json 返回给前端
		if err := json.NewEncoder(w).Encode(response); err != nil {
			http.Error(w, err.Error(), 500)
			return
		}
		return
	}
    ...
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值