【问题标题】:How to read data from POST, test it with a condition and send a response back如何从 POST 读取数据,使用条件对其进行测试并发送回响应
【发布时间】:2018-09-14 04:03:59
【问题描述】:

我正在寻找一种简单的前端和后端通信解决方案。

我想写一个简单的 JS 前端客户端,用户可以在其中输入一个介于 1 到 10 000 之间的数字来猜测服务器生成的数字。

所以客户端的工作是发送用户猜测的数字。服务器应测试secretNumber 是否高于或低于用户提供的值,并返回该信息。

目前,我的服务器只发送该密码。我正在我的客户端控制台中获取它,因此连接正常。

我的问题是我应该如何修改我的服务器代码以从请求中读取数字值,对其进行测试,然后发送正确的响应(例如 -> 你的数字高于secretNumber)?

这是我的服务器:

const express = require('express');
const app = express();
const cors = require('cors');

app.use(cors());

app.use((request, response, next) => {
  console.log(request.headers);
  next();
});

app.use((request, response, next) => {
  request.secretNumber = Math.floor(Math.random() * 10000) + 1;
  next();
});


app.get('/', (request, response) => {
  response.json({
    secretNumber: request.secretNumber
  });
});

app.listen(3001, () => console.log("Listening on 3001"));

这是我的前端 JS 代码(我使用的是axios):

export function guessNumber(guessValue) {
  return dispatch => {
    dispatch({ type: GUESS_NUMBER });
    axios
      .post('/guess', {
        isNumber: guessValue,
      })
      .then(response => {
        console.log(response);
      })
      .catch(error => {
        console.log(error);
      });
  };
}

我在here 寻找答案,但也许我经验不足,我需要一些真实的例子......

【问题讨论】:

    标签: javascript node.js express post axios


    【解决方案1】:

    首先,您需要在请求之间保留secretNumber。目前,您正在为每个请求生成一个新值。

    假设只有一个客户端同时使用后端,您可以通过在服务器启动时生成 secretNumber 并将其保存在内存中(将其分配给一个变量)来做到这一点。

    那么你可以简单地使用路由参数来捕捉客户端的猜测:

    app.get('/guess/:guess', (request, response) => {
      const guess = params.guess;
    
      // compare guess with secretNumber and respond accordingly
    });
    

    或者,您可以使用请求的正文 (https://expressjs.com/en/4x/api.html#req.body) 而不是路由参数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-06
      • 1970-01-01
      • 2012-07-31
      • 2012-06-04
      相关资源
      最近更新 更多