2017-11-11 2 views
0

익스프레스로 로컬 JSON 파일에 GET 요청을 만들고 싶습니다. 내 server.js에서express.js로 로컬 json 파일에 GET 요청을하는 방법은 무엇입니까?

나는 DOM이로드로이

[{ 
    "param": "one", 
    "param": "two", 
    "param": "three" 
    }] 

이 또한 내가 곧이라고 GET 요청에 대한 기능을 만든 것처럼이

var data = {}; 
app.get('/src/assets/data.json', (req, res) => { 
    console.log(res) 
    res.writeHead(200, { 
    'Content-type': 'application/json' 
    }); 

    res.end(JSON.stringify(data)); 
}); 

data.json 보이는이

getData() { 
    let xhr = new XMLHttpRequest(); 
    xhr.open('GET', '/src/assets/data.json', true); 
    xhr.onreadystatechange =() => { 
     if (xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200) { 
     console.log(xhr) 
     } 
    }; 
    xhr.send(); 
    } 

응답이 다시 표시되지만 빈 개체입니다. 그것은 내 서버 파일에 var data = {}; 비어 있지만 그것은 무엇을 해야할지 모르겠다 고 생각하고있어?

답변

4

왜 당신은 단순히 당신이

var data = {}; 
app.get('/src/assets/data.json', (req, res) => { 
    console.log(res) 

    /* Insted of doing all this */ 
    // res.writeHead(200, { 
    // 'Content-type': 'application/json' 
    // }); 
    // res.end(JSON.stringify(data)); 

    /* Just send the file */ 
    res.sendFile(path.join(__dirname, '/src/assets', 'data.json')); 
}); 

에 대해 요청 된 파일을 전송하지 않습니다하지만 당신은 당신의 코드로 수행하려는 경우, 당신이 코드에 포함해야하는 것은

입니다
  1. data.json 파일을 읽으십시오.
  2. 파일의 모든 데이터를 개체, 즉 data 변수에 넣습니다.

    var fs = require('fs'); /* Put it where other modules included */ 
    var data = JSON.parse(fs.readFileSync('/src/assets/data.json', 'utf8')); /* Inside the get function */ 
    

    비동기 :

    var fs = require('fs'); 
    var data; 
    fs.readFile('/src/assets/data.json', 'utf8', function (err, data) { 
        if (err) throw err; 
        data = JSON.parse(data); 
    }); 
    

    적용하기 전에 공식 문서를 읽어 보시기 바랍니다

파일을 읽으려면 Node.js를의 File System 모듈을 포함하는

동기화 필요 코드를 작성하고 노드 파일 시스템에서 다른 예제를 자유롭게 확인하십시오.

출처 : Here

+0

고맙습니다. – Allan

+0

답변을 upvoting하시기 바랍니다. @allan – imvpn22

관련 문제