Javascript 使用Node.js流式传输JSON

Javascript 使用Node.js流式传输JSON,javascript,node.js,routes,Javascript,Node.js,Routes,我被赋予了一项任务——我正在尝试使用just Node创建路由/端点,以便更好地演示Express封面下发生的事情。但我必须使用流 我有两条路线GET/songs和GET/refresh songs,要求如下: 我们需要以下两个端点: 获取/播放歌曲 获取/刷新歌曲 所有端点都应该返回带有正确头的JSON /歌曲应该 从src/data/songs.json文件流式传输数据 如果该文件或目录不存在,则不会使服务器崩溃 在这种情况下触发刷新代码的奖励点数 压缩响应的额外点数 /刷新歌曲应该 立即返

我被赋予了一项任务——我正在尝试使用just Node创建路由/端点,以便更好地演示Express封面下发生的事情。但我必须使用流

我有两条路线
GET/songs
GET/refresh songs
,要求如下:

我们需要以下两个端点:

获取/播放歌曲
获取/刷新歌曲

所有端点都应该返回带有正确头的JSON

/歌曲应该

从src/data/songs.json文件流式传输数据 如果该文件或目录不存在,则不会使服务器崩溃

在这种情况下触发刷新代码的奖励点数 压缩响应的额外点数

/刷新歌曲应该

立即返回 刷新歌曲时,它不应保留响应

返回带有状态JSON响应的202状态代码

继续从iTunes获取歌曲 前端应该有

触发此端点的UI/按钮

到目前为止,这就是我在
server.js
文件中的端点所在位置

const { createServer } = require('http');
const { parse: parseUrl } = require('url');
const { createGzip } = require('zlib');
const { songs, refreshSongs } = require('./songs');
const fs = require('fs');
const stream = fs.createReadStream('./src/data/songs.jso')

const PORT = 4000;

const server = createServer(({ headers, method, url }, res) => {
  const baseResHeaders = {
    // CORS stuff is gone. :(
    'content-type' : 'application/json'
  };

  // Routing ¯\_(ツ)_ /¯
  //

  var path = url.parseUrl(url).pathname;

  function onRequest(request, response){
    response.writeHead(200, 'Content-Type': baseResHeaders['content-type']);
    stream.on('data', function(err, data){
      if (err) {
        response.writeHead(404);
        response.write('File not found');
        refreshSongs();
      } else {
        response.write(createGzip(data))
      }
      response.end()
    })
  }

  switch (path) {
    case '/songs':
      onRequest()
      break;
    case '/refresh-songs':
      onRequest()
      break;

  }

server.on('listening', () => {
  console.log(`Server running at http://localhost:${PORT}/`);
});

我想知道我是否正确地连接了我创建的
onRequest
方法,以及switch语句是否正确地拦截了那些URL的请指出问题所在;你期待什么,你得到什么,等等。。有一些关于如何创建一个好问题的好提示。@MikeMcCaughan谢谢我更新了我的问题!