You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React通过useEffect Hook调用Python Bottle后端接口报错求助

问题:Bottle + React 使用useEffect请求数据持续报错

我用Python的Bottle框架做后端,React做前端,想通过useEffect Hook从http://127.0.0.1:8080/获取数据,但一直报错。

后端代码

@get('/')
def _():
    data = {
        'name': 'Alvin',
        'lastname': 'Johnson'
    }
    return json.dumps(data)

前端代码

import React, { useEffect, useState } from 'react';

import './App.css';

function App() {

  const [data, setdata] = useState({
    name: '',
    lastname: ''
  });

  useEffect(() => {
    fetch('/').then((res) =>
      res.json()).then((data) => {
        console.log(data);
        setdata({
          name: data.name,
          lastname: data.lastname
        });
      })
  }, []);

  return (
    <div className="App">
      <h1>Welcome to Python-React app</h1>
      <p>{data.name}</p>
      <p>{data.lastname}</p>
    </div>
  );
}

export default App;

package.json 中的proxy配置

"proxy":"http://127.0.0.1:8080/",

错误排查与修复方案

1. 后端响应头配置错误

Bottle直接返回json.dumps(data)时,默认响应头的Content-Type是text/html,但前端用res.json()会尝试解析JSON格式,这会导致解析失败,是核心问题。

修复方法二选一:

  • 手动设置响应头:
from bottle import response

@get('/')
def _():
    data = {
        'name': 'Alvin',
        'lastname': 'Johnson'
    }
    response.content_type = 'application/json'
    return json.dumps(data)
  • 直接返回字典(Bottle会自动完成JSON序列化并设置正确响应头):
@get('/')
def _():
    data = {
        'name': 'Alvin',
        'lastname': 'Johnson'
    }
    return data

2. 前端未捕获错误

当前fetch代码没有错误捕获逻辑,无法定位具体报错信息,建议添加catch块:

useEffect(() => {
  fetch('/')
    .then((res) => {
      if (!res.ok) throw new Error(`请求失败,状态码:${res.status}`);
      return res.json();
    })
    .then((data) => {
      console.log(data);
      setdata({ name: data.name, lastname: data.lastname });
    })
    .catch(err => console.error('请求出错:', err))
}, []);

3. Proxy配置生效检查

  • 确保package.json中的proxy配置无多余空格,且React开发服务器(默认端口3000)已重启,让proxy配置生效。
  • 先直接在浏览器访问http://127.0.0.1:8080/,确认后端返回的是标准JSON格式,且响应头包含Content-Type: application/json。

内容的提问来源于stack exchange,提问作者Elisha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 20:54:26