【问题标题】:How to make Axios post call to an express parameterized route?如何使 Axios 对快速参数化路由进行后调用?
【发布时间】:2021-12-09 14:57:36
【问题描述】:

所以我有一条快速路线

router.post('/:make&:model&:year', function (req, res) {  
  const newCar = {
    make: req.params.make,
    model: req.params.model,
    year: req.params.year
  }
  Car.create(newCar);
  res.send(newCar);}); 

所以这在上面使用邮递员工作

http://localhost:8000/buildings/Audi&A4&2018

我想知道 Axios 帖子如何进入反应功能组件。这就是我所拥有的,但它并没有到达快递路线。

const [carFetch, setFetch] = useState('');
const postAxios = async () => {
    const payload = { make: 'Audi', model: 'A4', year: 2018 };
    const { data } = await axios.post('http://localhost:1337/cars/', payload);
    setFetchedData(data);
};

但它不起作用。

~SRJ

【问题讨论】:

  • 使用URLSearchParams。例如。 const params = new URLSearchParams(payload); 然后将其传递给 axios? --- 另外,我不认为你的意思是使用.post?您可能会改用.get
  • 一个合适的例子会更好。这是给快递的邮政电话。
  • 您想解释什么?我提出了一个建议,这还不足以回答。
  • 上述场景中的URLSearchParams在哪里以及如何使用?
  • 实际上,如果您使用.get,您可能只需将对象作为配置属性传入即可。 axios.get('http://localhost:1337/cars', { params: payload })?

标签: javascript node.js reactjs express react-hooks


【解决方案1】:

不确定我们要在这里实现什么,但这里有一个解决方案: 鉴于您在 express 中的参数是按原样设计的,我们需要将参数作为字符串对象传递:

const [carFetch, setFetch] = useState('');
const postAxios = async () => {
const payload = `Audit&A4&2018`;
    const url = `http://localhost:1337/cars/${payload}`;
    const { data } = await axios.post(url); 
    setFetchedData(data);
};

这应该会点击快速 URL,并且应该进行 post 调用。

【讨论】:

    【解决方案2】:

    如果请求没有命中快速路由处理程序,则 url 匹配应该有问题。

    如果您按照您的反应代码示例显示的方式发送请求,您应该在 rout 处理程序的 req.body 对象中查找数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-16
      • 1970-01-01
      • 2016-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-04
      相关资源
      最近更新 更多