go的iris框架进行接收post请求参数获取与axios(vue)的数据传入

iris的post请求&接收数据

go 复制代码
package main

import "github.com/kataras/iris/v12"

func main(){
  app := iris.New()
  //Get请求
  app.Get("/",func(ctx iris.Context){
    ctx.Text("你好,这是首页")
  })
  //Post请求
  app.Post("/postTest",func(ctx iris.Context){
    name := ctx.PostValue("name") //通过PostValue(requestName)这个api进行获取
    ctx.Text(name)//用文本响应
  })
  //监听端口
  app.Listen(":8088")
}

前端处理跨域请求

因为iris中我们没有做跨域处理所以我们在vite.config.ts(vite.config.js)中做处理

ts 复制代码
import { defineConfig } from 'vite'
import path from "path"
import vue from '@vitejs/plugin-vue'

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [vue()],
  server:{
    proxy: {
      '/my-api-go':{
        target: "http://localhost:8088/",
        changeOrigin:true,
        rewrite: path => path.replace(/^\/my-api-go/,'')
      }
    }
  }
})

axios处理

html 复制代码
<script setup lang="ts">
import {ref,reactive,Ref} from "vue"
import axios from "axios"
import qs from 'qs'

const username:Ref<string> = ref('')
const pwd: Ref<string> = ref('')

const value:Ref<string> = ref('')

const testBtn01 = () => {
    axios.get('/my-api-test01/test01').then(async (res:any)=>{
        console.log(res.data)
    }).catch((err:any)=>{
        console.log(err)
    })
}
const postBtn01 = () => {
	// 将参数转换成功 formdata 接收格式
    function stringify (data:any) {
        const formData = new FormData()
        for (const key in data) {
            // eslint-disable-next-line no-prototype-builtins
            if (data.hasOwnProperty(key)) {
            if (data[key]) {
                if (data[key].constructor === Array) {
                if (data[key][0]) {
                    if (data[key][0].constructor === Object) {
                    formData.append(key, JSON.stringify(data[key]))
                    } else {
                    data[key].forEach((item, index) => {
                        formData.append(key + `[${index}]`, item)
                    })
                    }
                } else {
                    formData.append(key + '[]', '')
                }
                } else if (data[key].constructor === Object) {
                formData.append(key, JSON.stringify(data[key]))
                } else {
                formData.append(key, data[key])
                }
            } else {
                if (data[key] === 0) {
                formData.append(key, 0)
                } else {
                formData.append(key, '')
                }
            }
            }
        }
        return formData
	}
    axios({
    	method: 'post',
        url: '/my-api-go/postTest',
        data:{
        	name: username.value
        },
        headers:{
        	'Content-Type': 'application/x-www-form-urlencoded'
       },
       transformRequest:{
                function(data:any){
                    return stringify(data)
                }
       },
       transformResponse:{
       	    async function(data:any){ //async await:异步阻塞
            	value.value = await data
                return data
			}
		}
	})
    }
}

</script>

<template>
    <div>
        <div>
            <input type="text" placeholder="用户名" v-model="username"/><br />
            <button @click="postBtn01()">提交</button>
            <p>{{value}}</p>
        </div>
    </div>
</template>

<style scoped>

</style>

注意点

  • stringify函数:不需要注意, 复制粘贴即可
  • axios({})
    • method:请求方式,可以是get,post,put,options
    • url:请求api的路径
    • data:传输的参数与go中的获取参数名称(PostValue中的name和data中的name:'')要一致否则后端还是获取不到
    • transformRequest :发送请求时处理
    • transformResponse:接收响应时处理
相关推荐
Fuyo_11191 分钟前
C++中的活字印刷术——模板·初阶
开发语言·c++·笔记
在角落发呆2 分钟前
跨越网络鸿沟:传统文件传输与现代内网穿透的奇妙交响
开发语言·php
Season4505 分钟前
C++之模板元编程(前置知识 constexpr)
开发语言·c++
AI玫瑰助手8 分钟前
Python运算符:比较运算符(等于不等等于大于小于)与返回值
android·开发语言·python
摸鱼小李上线了30 分钟前
vue项目页面添加水印实现方法
前端·javascript·vue.js
计算机安禾30 分钟前
【c++面向对象编程】第40篇:单例模式(Singleton)的多种C++实现
开发语言·c++·单例模式
_日拱一卒1 小时前
LeetCode:114二叉树展开为链表
java·开发语言·算法
天天进步20151 小时前
从零打造 Python 全栈项目:智能教学辅助系统
开发语言·人工智能·python
kkeeper~1 小时前
0基础C语言积跬步之内存函数
c语言·开发语言
吃好睡好便好1 小时前
在Matlab中绘制杆状图
开发语言·学习·算法·matlab·信息可视化