如何在 Go Web-Server 和 Vue.js 前端之间交换数据? http 帖子:404

2023-12-04

我试图了解如何在非常精简的 golang Web 服务器和 vue.js 前端之间交换数据。

这是 server-gorillamux.go 文件:

package main

import (
        "encoding/json"
        "github.com/gorilla/mux"
        "log"
        "net/http"
)

const (
        CONN_HOST = "192.168.1.7"
        CONN_PORT = "3000"
)

type Puser struct {
        first_name   string `json:"first_name"`
        last_name    string `json:"last_name"`
        company_name string `json:"company_name"`
        email        string `json:"email"`
        tel          string `json:"tel"`
}

type Pusers []Puser

var pusers []Puser

type Route struct {
        Name        string
        Method      string
        Pattern     string
        HandlerFunc http.HandlerFunc
}

type Routes []Route

var routes = Routes{
        Route{
                "getPusers",
                "GET",
                "/pusers",
                getPusers,
        },
        Route{
                "addPuser",
                "POST",
                "/puser/add",
                addPuser,
        },
}

func getPusers(w http.ResponseWriter, r *http.Request) {
        json.NewEncoder(w).Encode(pusers)
}

func addPuser(w http.ResponseWriter, r *http.Request) {
        puser := Puser{}
        err := json.NewDecoder(r.Body).Decode(&puser)
        if err != nil {
                log.Print("error occured while decoding puser data :: ", err)
        }
        log.Printf("adding puser id :: % s with firstName ass :: %s and lastName as :: %s ",   
                puser.first_name, puser.last_name)
        pusers = append(pusers, Puser{first_name: puser.first_name,
                last_name: puser.last_name, company_name: puser.company_name,
                email: puser.email, tel: puser.tel})
        json.NewEncoder(w).Encode(pusers)
}

func AddRoutes(router *mux.Router) *mux.Router {
        for _, route := range routes {
                router.
                        Methods(route.Method).
                        Path(route.Pattern).
                        Name(route.Name).
                        Handler(route.HandlerFunc)
        } 
        return router
 }

func main() {
        muxRouter := mux.NewRouter().StrictSlash(true)
        router := AddRoutes(muxRouter)
        router.PathPrefix("/").Handler(http.FileServer(http.Dir("../src/components
/auth/Forms.vue")))
        //router.PathPrefix("/").Handler(http.FileServer(http.Dir("../public/")))
        err := http.ListenAndServe(CONN_HOST+":"+CONN_PORT, router)
        if err != nil {
                log.Fatal("error starting http server :: ", err)
                return
        }
}

这是 /src/components/auth/Forms.vue 文件:

<template>
  <div id="signupform">
    <div class="signup-form">
      <form @submit.prevent="onSubmit">
        <div class="firstname">
          <label for="firstname">First Name</label>
          <input
                 type="string"
                 id="firstname"
                 v-model="firstname" placeholder="First Name">
        </div>
        <div class="lastname">
          <label for="lastname">Last Name</label>
          <input
                 type="string"
                 id="lastname"
                 v-model="lastname" placeholder="Last Name">
        </div>
        <div class="companyname">
          <label for="companyname">Company Name</label>
          <input
                 type="string"
                 id="companyname"
                 v-model="companyname" placeholder="Company Name">
        </div>
        <div class="input">
          <label for="email">Mail</label>
          <input
                  type="email"
                  id="email"
                  v-model="email" placeholder="e-mail">
        </div>
        <div class="input">
          <label for="tel">Telephone Number</label>
          <vue-tel-input v-model="tel"></vue-tel-input>
        </div>
        <div class="input inline">
      <input type="checkbox" id="terms" v-model="terms">
          <label for="terms">Accept Terms of Use</label>
        </div>
        <div class="submit">
          <button type="submit">Submit</button>
        </div>
      </form>
    </div>
  </div>
</template>

<script>
  //import axios from '../../axios-auth';

  import Vue from 'vue';
  import { VueTelInput } from 'vue-tel-input';

  Vue.use(VueTelInput);

  export default {
    components: {
      VueTelInput,
    },
    data () {
      return {
        firstname: '',
        lastname: '',
        companyname: '',
        email: '',
        tel: '',
        terms: false
      }
    },
    methods: {
      onSubmit () {
        const formData = {
          first_name: this.firstname,
          last_name: this.lastname,
          company_name: this.lastname,
          email: this.email,
          tel: this.tel,
          terms: this.terms
        }
        this.addPuser(formData);
      },
      addPuser (fdata) {
        this.$http.post('/puser/add', {
            fdata
            //first_name:this.firstname,
            //last_name:this.lastname,
            //company_name:this.companyname,
            //email:this.email,
            //tel: this.tel
          }).then(response => {
              console.log(response);
           }, error => {
             console.error(error);
          });
      }
    } // end of methods
  }
</script>

<style scoped>
    ....
</style>

执行 golang Web 服务器:

(base) marco@pc01:~/webMatters/vueMatters/GraspGlobalChances/goServer$ go run server-  
gorillamux.go

编译并运行 vue.js 前端

DONE Compiled successfully in 1960ms 4:37:20 PM

App running at:

    Local: http://localhost:8080
    Network: http://ggc.world/

enter image description here

enter image description here

更新1)

这些是 /var/log/nginx/ggcworld-access.log 的最后几行,对应于我上次的 POST 尝试:

2.36.119.16 - - [30/Apr/2020:16:01:41 +0200] "GET / HTTP/2.0" 200 694 
"-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like 
Gecko) Chrome/81.0.4044.129 Safari/537.36"
2.36.119.16 - - [30/Apr/2020:16:01:41 +0200] "GET /js/app.js HTTP/2.0"
200 147353 "https://ggc.world/" "Mozilla/5.0 (X11; Linux x86_64)   
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/$
2.36.119.16 - - [30/Apr/2020:16:01:42 +0200] "GET /js/chunk-vendors.js
HTTP/2.0" 200 4241853 "https://ggc.world/" "Mozilla/5.0 (X11; Linux 
x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.$
2.36.119.16 - - [30/Apr/2020:16:01:42 +0200] "GET /sockjs-
node/info?t=1588255302671 HTTP/2.0" 200 79 "https://ggc.world/"    
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like 
Gecko) Chrome/81$
2.36.119.16 - - [30/Apr/2020:16:03:50 +0200] "POST /puser/add 
HTTP/2.0" 404 137 "https://ggc.world/" "Mozilla/5.0 (X11; Linux 
x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 
Safari/53$

如何在 golang Web 服务器和 vue.js 前端之间正确交换数据? 期待您的好意帮助。 马可


看起来您的后端服务器正在端口上运行3000而你的前端正在运行8080。如果是,请在您的前端应用程序中配置代理规则,如下文档 -开发期间的 API 代理

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Go Web-Server 和 Vue.js 前端之间交换数据? http 帖子:404 的相关文章

  • 具有 Laravel 权限的 Vue.js

    我正在将 Laravel Permission API 与 Vue JS 前端集成 我在用https github com spatie laravel permission https github com spatie laravel
  • Go 算术中处理浮点数精度?

    我对 Go 中精确减去 2 个浮点数的方法感兴趣 我尝试过使用math big图书馆 但我无法得到准确的结果 我用过big js https github com MikeMcl big jsJavascript 库解决了这个问题 Go 算
  • 如何在 Docker 容器中持久保存 go 1.11 模块?

    我正在将 Go 1 10 应用程序迁移到 Go 1 11 这还包括从dep https golang github io dep to mod https github com golang go wiki Modules用于管理依赖关系
  • .vue 组件中的条件样式表

    我正在使用 vue 组件 cli vue 仅当某些布尔值为真 假时 我才需要显示样式表 最简单的解释是这样的 什么时候myVar 假 组件未加载样式 我知道那样是不可能的 但是我怎么能做 类似 的事情呢 如果用户想使用默认样式 我需要在 v
  • 当 Axios 中的 responseType 为 blob 和 VueJs 时,如何读取 http 错误? [复制]

    这个问题在这里已经有答案了 我在 VueJS 应用程序中使用 Blob responseType 和 Axios 从服务器下载文档 当响应代码为 200 时 它工作正常并下载文件 但是当出现任何 http 错误时 我在捕获错误时无法读取状态
  • .htaccess 不重定向到 404.php 而是显示页面名称

    我正在尝试为我的网站制作自定义 404 页面 并且正在尝试 htaccess使用此规则的根目录中的文件 ErrorDocument 404 404 php I want to redirect to 404 所以当我更改有效的文件名时 例如
  • golang中的Reader接口和Read方法

    我正在关注 golang 之旅 我被要求 实现一个 rot13Reader 它实现 io Reader 并从 io Reader 读取 通过将 ROT13 替换密码应用于所有字母字符来修改流 我首先将方法实现到 rot13Reader ty
  • 使用 JAX-RS 通过 HTTP PUT 流式传输字节

    我有一个工作流程 涉及从 Java 客户端到 Web 服务器执行 HTTP POST 帖子的正文有一个规范对象 然后 我将其从我的网络服务器传递到 Apache ZooKeeper 它在服务器上以自己的进程运行 后者运行大量计算 我正在努力
  • 使用 vue-router 保留组件状态?

    我有一个列表 详细信息用例 用户可以双击产品列表中的项目 转到详细信息屏幕进行编辑 然后在完成后返回列表屏幕 我已经使用此处描述的动态组件技术完成了此操作 https v2 vuejs org v2 guide components htm
  • Vuetifyjs 错误未知的自定义元素:您是否正确注册了组件

    我使用 vuetify 构建模板但收到错误 unknown custom element dashboard did you register the component correctly 这是我的代码 In the main js im
  • Vue CLI 3 不会将供应商转换为 ES5

    我们有一个 vue cli 3 项目 它工作得很好并且编译没有问题 事实上 我们必须支持仅支持 ES5 代码的旧浏览器 在项目中我们集成了一些用ES6编写的外部库 reconnecting websocket是一个例子 Problem 使用
  • Python - 单击 JavaScript 按钮

    我在页面上有一个按钮 需要单击该按钮才能按顺序转到下一页 我想知道如何使用 Python 实现这一点 该按钮似乎是 HTTP POST 请求和 Javascript 的混合体 以下是该按钮的代码
  • golang 将 big.Float 转换为 big.Int

    将big Float转换为big Int 我在下面编写代码 但它溢出了uint64 那么将big Float转换为big Int的正确方法是什么 package main import fmt import math big func Fl
  • 从 alpine 容器执行“go get download”时,如何避免出现“x509:由未知机构签名的证书”?

    我正在尝试使用以下 Dockerfile 从头开始 构建 coredns FROM golang alpine SHELL bin sh ec RUN apk update apk add no cache git make ca cert
  • Golang 使用 gomail.v2 实现多个收件人

    我通过 gomail v2 发送电子邮件的唯一方法是在 for 循环中对每封电子邮件使用 Send 函数 但我需要向其他电子邮件地址显示已发送相同的电子邮件 for recipient range os Args 3 mail SetAdd
  • 从 Codeigniter 应用程序在 Facebook 墙上发帖

    我有一个基于 CI 的应用程序 允许用户发布类似于 Facebook 墙的更新流 目前 用户可以使用 FB connect 通过 Facebook 验证我的应用程序 我想提供一种可能性 即用户在发布到我的应用程序时也能够将相同的帖子发送到他
  • Vue 和 Axios + AWS API 网关和 Lambda - CORS + POST 不起作用

    我正在尝试通过 AWS API Gateway 创建一个 API 测试函数 以及一个通过 Axios 的 Vue 应用程序调用的 Lambda 函数 它应该从输入元素发送姓名和电子邮件 每次我收到此错误时 Access to XMLHttp
  • Go中通过反射给struct成员赋值

    我有一个结构 v 其中包含成员 A B C 字符串 使用反射 我可以获得字段的名称及其值 typ v Type for i 0 i lt v NumField i gets us a StructField fi typ Field i f
  • 将参数传递给 http.HandlerFunc

    我正在使用 Go 的内置 http 服务器pat http github com bmizerany pat响应某些 URL mux Get products http HandlerFunc index func index w http
  • 如何从 gorm 中的模型获取表名?

    是否可以获得模型的表名 我发现可以从模型结构但我不知道如何正确地做到这一点 我没有找到该结构的任何初始化 user User tableName db 对于 Gorm v2 根据https github com go gorm gorm i

随机推荐

  • 如何绘制实心圆?

    我正在根据规范使用 C 代码创建位图 bmp 文件 并且我想在位图上绘制简单的图元 以下代码显示了如何在位图上绘制矩形 if curline gt type 1 draw a rectangle int xstart curline gt
  • SQLAlchemy 返回奇怪的数据

    我正在尝试从表中导出日期 我只想将原始创建的对象拉出来 我正在运行以下查询 return model Session query cls filter cls issue id issue id order by desc created
  • SQL:更新表,其中列=多个值

    我创建了一个 SQL 查询 它更新表列 其中另一列 值 CODE Update Products Set ProductName Shoes WHERE ProductID 1 2 3 4 5 6 7 8 问题在于ProductID 我怎样
  • java应用程序可以分配比jvm启动参数指定的更多的内存吗?

    假设 java 应用程序不使用任何本机库 有没有办法让它分配比 jvm 启动参数指定的内存更多的内存 反过来问 我可以相信 Java 应用程序永远不会分配比 JVM 启动参数限制更多的内存吗 是的 它可以 它不能在 JVM 堆上分配更多内存
  • 如何获取本地时间并将其放入字符串中

    我有一个方法s它有一个日期时间作为参数 怎么用c 写呢 In c it is string s System DateTime sd 编辑 如何调用S方法 我也想在一个字符串中显示小时 在另一个字符串中显示第二个 等等 另一个问题是 如何转
  • 如何以编程方式配对 Android 蓝牙设备

    我正在开发一个应用程序 我想连接蓝牙设备 主要问题是我不希望用户输入所需的密码 而是应用程序应该自己执行此操作 我没有任何与连接相关的问题 只想要由应用程序本身插入并完成 pin 身份验证过程 我发现以下代码我确信它可以工作 但不确定如何在
  • Gatsby Develop:安装“sharp”模块时出错

    我刚刚在 Gatsby 上从入门模板上进行了 git 克隆 当我运行 gatsbydevelopment 时遇到了这个错误 我已经删除了节点模块 以及节点模块中的锐模块 无济于事 请让我知道此时发生了什么 PS C Users ipche
  • Keras:使用模型的一阶导数和二阶导数之和作为最终输出

    假设我使用 Keras 创建了这个模型 model Sequential model add Dense 32 activation tanh input dim 1 model add Dense 10 activation tanh m
  • 子类上的急切加载关联

    我有以下 简化的 类层次结构 def Parent lt ActiveRecord Base end def Child lt Parent belongs to other end def Other lt ActiveRecord Ba
  • jiffies 在无滴答内核中如何递增?

    内核维护一个全局变量 名为jiffies它保存系统启动时的滴答数 定时器中断数 每次发生定时器中断时 内部内核计数器的值都会递增 在无滴答内核 动态滴答中 中断不会定期发生 那么jiffies增加 的价值jiffies总是更新调用do ti
  • Jackson/Hibernate、元获取方法和序列化

    我们有很多具有嵌套关系的休眠实体类 我正在尝试找到将给定实体转换为等效 json 格式的最佳方法 我了解 JsonIgnore Jackson mixins 和 JsonFilters 并且一直在尝试这些 我们面临的挑战如下 使用 OneT
  • 如何通过单击按钮打印 HTML 内容而不是页面? [复制]

    这个问题在这里已经有答案了 我想在用户单击按钮时打印一些 HTML 内容 一旦用户单击该按钮 浏览器的打印对话框将打开 但不会打印网页 相反 它会打印页面上未显示的其他一些 HTML 内容 在问这个问题时 我脑子里几乎没有解决方案 但我不确
  • 如何防止文本元素中出现字母?

    我喜欢最大长度为 3 的输入 这些输入值只能是数字 不能是字母 参考这篇文章 为什么 在 Safari 中不起作用 你可以看到我不能使用
  • Vue DOM 图像无法正确显示

    我正在使用 Vue 框架并使用以下命令创建图像DomUtil Create功能 在此图像中 我想动态地将源写入该图像 但该图像不会向用户显示 我使用以下命令在页面上放置了一个普通图像 img 标签 它在这里工作 仅当创建 DOM 元素时它才
  • 如何使用 urllib 跟踪重定向?

    我正在 Python 3 中创建一个脚本 该脚本访问如下页面 example com daora zz asp x qqrzzt 使用 urllib request urlopen example com daora zz asp x qq
  • 如何在 Google Apps 脚本中使用 AngularJS

    是否可以使用 Angular js 作为使用 Google Apps 脚本中的 HtmlService 提供服务的 Web 应用程序的一部分 我也改变了Code gs文件如下链接所述 如何在 Google Apps 脚本提供的 HTML 网
  • .NET 框架中最安全的哈希算法是什么?

    生成的哈希值的大小和算法的速度并不重要 我真的只对它是最安全的选择感兴趣 我也不想使用任何第三方库 我使用的 NET 框架版本是 3 5 如果这有什么区别的话 我会想SHA512将是内置哈希算法的最佳选择 它是非常安全的算法的最大哈希形式
  • Python 彗星服务器

    我正在构建一个具有实时提要 类似于 Facebook 的新闻提要 的 Web 应用程序 我想通过长轮询机制对其进行更新 据我所知 对于 Python 我的选择几乎是使用 Stackless 从他们的 Comet wsgi 示例构建 或 Co
  • Openpyxl:将背景颜色设置为行和列属性错误

    看了这里的几个例子后 我尝试将背景颜色设置为整行和整列 我已经做好了 import openpyxl from openpyxl styles import PatternFill wb openpyxl load workbook sel
  • 如何在 Go Web-Server 和 Vue.js 前端之间交换数据? http 帖子:404

    我试图了解如何在非常精简的 golang Web 服务器和 vue js 前端之间交换数据 这是 server gorillamux go 文件 package main import encoding json github com go