Rest API,在路由中放置大量计算?

时间:2016-12-15 16:48:31

标签: javascript json node.js

我打算设计一个Rest API,它接收用户请求并进行大量计算并返回结果。

我是网络编程的新手。所以只需熟悉基本的API服务。

我所知道的:

1)使用JSON发送post方法的请求,因为数据并不那么简单。 2)我按照一些例子,并成功完成了基础知识。

所以我认为我最好开始编写繁重的计算部分。

我希望如下。

1)接收发布请求,并开始计算

2)刚刚计算发送"工作消息" (我想我可以做re.send(" MSG"))

我的问题

1)但是我应该在哪里进行繁重的计算?

2)因为我已经回复了" MSG",如果没有请求,我该如何发送另一个内容?

3)我读过中间件,感觉中间件在接收请求和发送响应之间处理事情。我是对的吗?

如果你能给我一个简单的例子,那就太好了。

1 个答案:

答案 0 :(得分:4)

实现这一点的最佳方法可能是在后台执行繁重的处理服务器端,并为客户端提供检查作业是否完成的方法。

例如,让我们说你想要进行一些繁重的计算。您可以创建这样的资源:

POST /calculator

客户端POST计算,然后资源队列计算作业以供稍后处理(可能是服务器上的某个cron作业)并使用作业资源进行响应:

{ "id": 123456, "status": "pending" }

然后客户端可以通过检查/ jobs资源随时检查作业是否完成:

GET /jobs/123456

最初可能会再次回应:

{ "id": 123456, "status": "pending" }

然后当它正在进行中时:

{ "id": 123456, "status": "in_progress" }

完成后:

{ "id": 123456, "status": "done", "result": <some object that contains the result of the calculation> }