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:接收响应时处理
相关推荐
彧azz1 小时前
图的存储结构详解:邻接矩阵的原理、实现与应用
开发语言·数据结构·学习·php
平头哥AI1 小时前
Day 22 _ 包装错误别丢链_%w、errors.Is 与 errors.As
android·服务器·学习·golang·go
嵌入式学习菌2 小时前
Modbus‑RTU 数据类型分析
开发语言·单片机·bug
matlab代码3 小时前
基于matlab数字图像处理的指纹识别系统【源码68期】
开发语言·matlab
Bs_MoneyMagnet3 小时前
基于springboot+vue的医疗健康便民服务平台的设计与实现 源码+文档
java·vue.js·spring boot·后端·spring
matlab代码3 小时前
基于matlab的水果识别系统(苹果香蕉菠萝梨桃子)【源码65期】
开发语言·matlab
wuyk5553 小时前
从零吃透 MQTT 通信|第 8 章 FreeRTOS 多任务架构下 MQTT 工程架构,任务拆分、队列解耦、临界区保护
c语言·开发语言·stm32·学习·架构
weixin199701080163 小时前
[特殊字符]《跨境二手ERP对接Back Market:标准化API + 7~10工作日技术合规审核实录》(附Python源码)
开发语言·python·pandas
尘客-追梦4 小时前
Day 01:插件化之前,先看清 ABI 这堵墙
开发语言·c++·qt
持敬chijing4 小时前
Python-数据类型-列表
开发语言·python·青少年编程