Reactjs 带有前端react的Symfony4后端。传递信息的最佳和最安全的方式?

Reactjs 带有前端react的Symfony4后端。传递信息的最佳和最安全的方式?,reactjs,symfony,Reactjs,Symfony,我正在学习React,希望创建一个以Symfony4作为后端和React前端的应用程序。现在,当我需要从后端向前端传递某种数据时,我陷入了困境。我真的不知道该怎么做?下面是一些教程,我是这样做的: 我从控制器向细枝文件发送一些数据: /** * @Route("/") */ public function homepage() { $date = new DateTime(); $curr_date = $date->format('Y-m-d H:i:s');

我正在学习React,希望创建一个以Symfony4作为后端和React前端的应用程序。现在,当我需要从后端向前端传递某种数据时,我陷入了困境。我真的不知道该怎么做?下面是一些教程,我是这样做的:

我从控制器向细枝文件发送一些数据:

/**
 * @Route("/")
 */
public function homepage()
{
    $date = new DateTime();
    $curr_date = $date->format('Y-m-d H:i:s');

    return $this->render('base.html.twig', [
        'gameDate' => $curr_date
    ]);
}
在twig文件中,我将其设置为数据属性

base.html.twig:

<div id="root" data-event-date="{{ gameDate }}">

然后我可以在JavaScript中将变量作为数据集获取

App.js:

const root = document.getElementById('root');

ReactDOM.render(<Homepage {...(root.dataset)}/>, root);
const root=document.getElementById('root');
ReactDOM.render(,root);
并从道具中渲染

Homepage.js:

class Homepage extends Component {
    constructor(props) {
        super(props)
        this.state = {
            prizePool: '',
            gameDate: '',
            numberOfPlayers: '' 
        }
    }

    onParticipateClick = (event) => {
        this.setState({prizePool: Math.random()})
    }

    render()
    {
        return (
            <div className="mt-c-10">
                 <GameInfoBox gameDate={this.props.eventDate}/>
            </div>
        )
    }
}
类主页扩展组件{
建造师(道具){
超级(道具)
此.state={
奖池:'',
游戏日期:'',
玩家数:“”
}
}
onParticipateClick=(事件)=>{
this.setState({prizePool:Math.random()})
}
render()
{
返回(
)
}
}

这实际上是可行的,但我关心的是显示数据变量中的所有信息,因为任何人都可以看到它。如果我想传递用户ID或一些秘密怎么办?应该有另一种方法来做对吗?

这取决于您的尝试,如果您正在处理大型项目,您可以使用API来服务后端数据。请看这里:。有一个简单的例子

但是,如果您想要更多的东西,请使用api平台或FOSRestBundle。

最佳和最安全”有点含糊不清-您需要严格的安全性,还是像代码稳定性这样的安全性

与将数据从控制器传递到视图(细枝),然后传递到HTML元素或全局元素不同,另一种方法是:

  • 控制器加载带有导航和其他内容的视图文件
  • 控制器加载响应(无论您如何操作,网页包等)
  • React调用另一个控制器(即
    fetch()
    )。此控制器可能类似于
    src/Api/controller/
    ,因为它不会渲染视图,所以请将其与渲染视图的其他控制器分开
  • API控制器调用您的DB或远程API(etc),获取数据并将其作为JsonResponse发送回React
  • 然后,React会根据响应状态显示数据或错误消息
  • MW中的API控制器也可以处理错误并进行一些日志记录,因此React只会获得200和数据或400(或其他),它可以像正常情况一样向用户显示一条好消息