小编The*_*heo的帖子

与Flask一起提供create-react-app

我有一个带有API路径的烧瓶后端,可以通过使用create-react-app样板创建的React单页面应用程序访问.当使用create-react-app内置开发服务器时,我的Flask后端工作,没问题.

现在,我想npm run build从我的Flask服务器提供构建(使用)静态反应应用程序.构建react应用程序会导致以下目录结构:

- build
  - static
    - css
        - style.[crypto].css
        - style.[crypto].css.map
    - js
        - main.[crypto].js
        - main.[crypto].js.map
  - index.html
  - service-worker.js
  - [more meta files]
Run Code Online (Sandbox Code Playgroud)

通过[crypto],我的意思是在构建时生成的随机生成的字符串.

收到index.html文件后,浏览器会发出以下请求:

- GET /static/css/main.[crypto].css
- GET /static/css/main.[crypto].css
- GET /service-worker.js
Run Code Online (Sandbox Code Playgroud)

我的问题是:我应该如何处理这些文件?我想出了这个:

from flask import Blueprint, send_from_directory

static = Blueprint('static', __name__)

@static.route('/')
def serve_static_index():
    return send_from_directory('../client/build/', 'index.html')

@static.route('/static/<path:path>') # serve whatever the client requested in the static folder
def serve_static(path):
    return send_from_directory('../client/build/static/', path)

@static.route('/service-worker.js')
def serve_worker():
    return send_from_directory('../client/build/', …
Run Code Online (Sandbox Code Playgroud)

python flask python-3.x reactjs create-react-app

48
推荐指数
4
解决办法
2万
查看次数

Node.js、Socket.IO、Express:应用程序逻辑应该位于套接字处理程序中还是 REST api 中?

我正在计划一个重要的实时聊天平台。该应用程序有多种类型的资源:用户、组、频道、消息。大约有 20 种类型的实时事件与这些资源有关:例如,提交消息、用户连接或断开连接、用户加入群组、主持人将用户踢出群组等……

总的来说,我认为有两种方法可以组织所有这些复杂性。

第一个是构建 REST API 来管理资源。例如,要发送消息,请 POST 到/api/v1/messages。或者,要将用户从组中踢出,请 POST 到/api/v1/group/:group_id/kick/. 然后,从 Express 路由处理程序中,使用io.emit更新的数据进行调用(可通过 res.locals 进行访问)以通知所有相关客户端。在这种情况下,客户端通过 HTTP 与服务器通信,服务器通过 socket.io 通知客户端。

另一种选择是根本不使用 REST API,并通过 socket.IO 处理所有事件。例如,要发送消息,请发出SEND_MESSAGE事件。或者,要踢用户,请发出一个KICK_USER事件。然后,从 socket.io 事件处理程序中调用io.emit更新的数据以通知所有客户端。

另一种选择是让某些操作由 REST API 处理,其他操作由 socket.IO 处理。例如,要获取所有消息,GET api/v1/channel/:id/messages. 但要发布消息,请发送SEND_MESSAGE到套接字。

哪个是最合适的选择?如何确定哪些操作需要通过 API 发送,哪些操作需要通过 socket.io 发送?对于此类应用程序,是否最好不要使用 REST API?


到目前为止,我的一些想法还没有定论:

REST API 相对于仅使用 socket.io 的方法的优点:

  • 更容易分层组织,更模块化

  • 更容易测试

  • 更坚固、更优雅

  • 使用中间件更简单的身份验证实现

REST API 相对于仅使用 socket.io 的方法的缺点:

  • 性能稍差(来源

  • 既然套接字连接无论如何都需要打开,为什么不将它用于所有事情呢?

  • 在客户端管理起来稍微困难一些。


谢谢阅读 …

rest api-design node.js express socket.io

5
推荐指数
1
解决办法
1099
查看次数

python3 中的 JSON 字符串和 .format()

我正在尝试使用 .format() 生成一个 JSON 字符串。我尝试了以下方法:

TODO_JSON = '{"id": {0},"title": {1},"completed:" {2}}'
print(TODO_JSON.format(42, 'Some Task', False))
Run Code Online (Sandbox Code Playgroud)

这引发了

File "path/to/file", line 2, in <module>
    print(TODO_JSON.format(42, 'Some Task', False))
KeyError: '"id"'
Run Code Online (Sandbox Code Playgroud)

为什么会出现这个错误?为什么“id”被解释为键而不是字符串的一部分?

python string json python-3.x

2
推荐指数
1
解决办法
2060
查看次数