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:接收响应时处理
相关推荐
昵称画8 小时前
交接班记录电子化:三班之间的信息不漏
开发语言·数据库·人工智能·低代码·php
“AI国潮设计-小江”9 小时前
【AIGC实战】Python+SDXL批量生成“潮汕英歌舞不倒翁”IP | 角色一致性与多场景融合方案,附完整代码
开发语言·人工智能·python·prompt·aigc
传奇开心果编程9 小时前
【Rust入门练中学】第6课:结构体与方法
开发语言·rust·结构体·编程语言理论·结构体方法·编程通用语言
code tsunami9 小时前
【无标题】
开发语言·python
CodeGL9 小时前
10、Python基础之进程和线程
开发语言·python
TechWayfarer10 小时前
PHP漏洞被利用,怎么揪出攻击IP?
开发语言·python·tcp/ip·网络安全·php
卡卡~~12 小时前
“101计划”核心课程实践教材《数据实验结构指导-C++语言版》题目集
开发语言·c++·学习·算法
qq_4069810312 小时前
大白话rust系列09 函数调用两次有什么错?
开发语言·python·rust
学逆向的12 小时前
C 多文件开发
c语言·开发语言·网络安全
布吉岛的石头12 小时前
Java 程序员第 50 阶段3:数据工程:预训练语料清洗与去重
java·开发语言·人工智能·深度学习·transformer