前端将数据发送到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
	}
    ...
}
在Flask中,Web前端可以通过发送HTTP请求将数据发送给后。具体来说,可以使用POST方法将数据作为请求的正文发送给后。在前端,可以使用JavaScript或其他前端框架来处理表单提交或使用Ajax来发送异步请求。在后,可以使用Flask提供的路由和视图函数来接收并处理这些请求。通过Flask的request对象,可以轻松地获取前端发送数据。例如,可以使用request.form来获取表单数据,或者使用request.get_json来获取JSON数据。然后,后可以根据接收到的数据执行相应的业务逻辑。总之,Flask提供了一种简单而灵活的方式,使得Web前端可以方便地将数据发送给后进行处理。\[2\]\[3\] #### 引用[.reference_title] - *1* [web前端(1)——了解什么是前端,以及与后的关系](https://blog.csdn.net/weixin_32146783/article/details/115946605)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Web前端Web的区分](https://blog.csdn.net/BYGFJ/article/details/116941315)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值