客户端发送数据到服务端遇到的问题 5.11

前端在8080端口,通过vue的devServer代理向8081端口的后端发送POST请求。使用axios,配置Content-Type为application/json。问题在于后端接收到的数据在req.body.data内,而非req.body,修正后正常接收。建议遇到问题时先检查并打印数据结构。
摘要由CSDN通过智能技术生成

前端发送数据后端进行验证遇到的错误

1.客户端发送到的地址

我的客户端开启在8080端口,服务端开启在8081端口,先在vue中config.js中配置代理地址 target: 'http://localhost:8081',然后在用ajax发送请求,然后发送请求就可以请求到服务端的端口

config.js代理配置

devServer: {
    proxy: {
      '/api': {// 匹配所有以 '/api'开头的请求路径
        target: 'http://localhost:8081',// 代理目标的基础路径
        changeOrigin: true,
        //pathRewrite: { '^/api': '' }//将/api替换成空白
      }
    }
  }

Ajax发送post请求

 sendInfo(){
            axios.post('http://localhost:8081/api/login', {
                data: { 
                    username: this.username,
                    password: this.password
                 }
            }, {
                headers: {
                    'Content-Type': 'application/json'
                }
            }).then((res) => {
                console.log(res.data)
                if(res.data.success){
                    this.$router.replace('/homePage')
                }
            }).catch((error) => {
                console.log(error);
            });

2.进入服务端接口,但是接受数据为undefined

客户端发送数据username = 'luxiaotao'到客户端对应的接口中的req中,接受数据const userinfo=req.body,接收数据的格式userinfo.data.username

错误点:接收格式写成userinfo.username,教训:以后可以先从底层看起console.log(userinfo),输入之后才知道要的数据被封装到data里边

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 C++ 中,可以使用 socket 编程实现上位机作为客户端发送数据服务端,并接收服务端发来的数据。下面是一个简单的示例程序,可以参考实现: 客户端: ```cpp #include <iostream> #include <stdio.h> #include <stdlib.h> #include <winsock2.h> #pragma comment(lib,"ws2_32.lib") #define BUF_SIZE 1024 int main() { // 初始化 Winsock WSADATA wsaData; WSAStartup(MAKEWORD(2, 2), &wsaData); // 创建套接字 SOCKET sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP); // 设置服务器地址 sockaddr_in servAddr; memset(&servAddr, 0, sizeof(servAddr)); servAddr.sin_family = AF_INET; servAddr.sin_addr.s_addr = inet_addr("127.0.0.1"); servAddr.sin_port = htons(1234); // 连接服务器 connect(sock, (SOCKADDR*)&servAddr, sizeof(servAddr)); std::cout << "Connected to server" << std::endl; // 发送数据 char sendData[BUF_SIZE] = "Hello, server!"; send(sock, sendData, strlen(sendData), 0); std::cout << "Send data to server: " << sendData << std::endl; // 接收数据 char recvData[BUF_SIZE]; int recvLen = recv(sock, recvData, BUF_SIZE, 0); std::cout << "Received data from server: " << recvData << std::endl; // 关闭套接字 closesocket(sock); // 清理 Winsock WSACleanup(); return 0; } ``` 服务端: ```cpp #include <iostream> #include <stdio.h> #include <stdlib.h> #include <winsock2.h> #pragma comment(lib,"ws2_32.lib") #define BUF_SIZE 1024 int main() { // 初始化 Winsock WSADATA wsaData; WSAStartup(MAKEWORD(2, 2), &wsaData); // 创建套接字 SOCKET servSock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP); // 设置服务器地址 sockaddr_in servAddr; memset(&servAddr, 0, sizeof(servAddr)); servAddr.sin_family = AF_INET; servAddr.sin_addr.s_addr = htonl(INADDR_ANY); servAddr.sin_port = htons(1234); // 绑定套接字 bind(servSock, (SOCKADDR*)&servAddr, sizeof(servAddr)); // 监听套接字 listen(servSock, 20); // 接受客户端连接 SOCKADDR clntAddr; int clntAddrSize = sizeof(clntAddr); SOCKET clntSock = accept(servSock, (SOCKADDR*)&clntAddr, &clntAddrSize); std::cout << "Accepted client connection" << std::endl; // 接收数据 char recvData[BUF_SIZE]; int recvLen = recv(clntSock, recvData, BUF_SIZE, 0); std::cout << "Received data from client: " << recvData << std::endl; // 发送数据 char sendData[BUF_SIZE] = "Hello, client!"; send(clntSock, sendData, strlen(sendData), 0); std::cout << "Send data to client: " << sendData << std::endl; // 关闭套接字 closesocket(clntSock); closesocket(servSock); // 清理 Winsock WSACleanup(); return 0; } ``` 这个示例程序中,客户端连接服务端发送数据后等待服务端返回数据服务端接收到客户端发送的数据后,返回一条消息给客户端。在实际应用中,可以根据需求修改数据发送和接收的格式和方式。同时,根据实际情况,可能需要对程序进行一些异常处理,以保证程序的稳定性和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值