使用React时如何从python文件发送stdin和接收stdout ?



所以我在React中使用TypeScript做一个小的棋盘游戏项目。我还想创建一个引擎,给出当前棋盘状态的评估(即玩家1在2步中获胜),但我更喜欢用Python编写。

我可以用什么方法从我的TS代码发送板状态到我的Python代码并收到响应?

我已经尝试使用AJAX向我的Python文件发送请求。然而,在我目前的情况下,我不确定如何通过标准输入向它输入,以及如何将它打印到标准输出的值(或者是否有更好的方式来接收这些值)。由于Python文件存储在我的本地文件系统上,我是否需要使用后端框架将其托管在服务器/api上?

如果这是一个愚蠢的问题,谢谢你的帮助。

要使Python文件与前端代码通信,它需要能够接收HTTP请求并响应HTTP响应;因此,它需要是一个服务器。您当然可以尝试让您的终端或stdin成为"中间人",但更简单的方法是在Python代码中处理所有这些。幸运的是,有很多很棒的Python后端框架,如果你的服务器只需要处理一个请求,我想你会发现它们都很容易使用。

你可以看看这些:

  • django
  • FastAPI

我想以Evyatar Shafran所说的为基础。

一般来说,为了让你的React项目(前端)与一些Python代码交互,这些Python代码应该在服务器(后端)内部运行。然后前端应该通过HTTP请求与后端通信,例如POST提交数据或GET检索数据。你可以在这里阅读更多关于各种类型的HTTP请求。

在上面提到的解决方案(Flask, Django, FastAPI)中,Flask和Django通常用于服务web页面(也就是说,它们处理HTTP请求,server .html页面,与db交互等)。

FastAPI可能是你想要实现的最接近的匹配(在React和Python项目之间来回传递消息,而前端逻辑由React处理,而不是后端服务器),但我从来没有使用过它。

Django可以通过使用Django REST框架来创建REST api。可以把它看作Django的一个附加组件,允许它作为与前端逻辑解耦的HTTP服务器工作,就像你的用例一样。使用DRF是很重要的,因为它可以让你绕过一些在制作Fullstack项目时有意义的Django特性,但在设置REST API时就不那么重要了,比如CSRF令牌特性。

根据你的用例和你的项目目标,使用Django而不是FastAPI可能是有益的。要了解更深入的比较,请参阅此处。

最新更新