javaScript/nodeJs

nodejs 서버 // http 서버 차근차근 -1 JSON파일

부엉이사장 2022. 6. 27. 14:24

사실 서버를 이해하면서 코드를보면서 대충 이해는 했지만

직접 작성을 하면서 익숙해지기는 어렵게 늦겨진다..

axios json등 개념부분은 이해가 되는데 직접 코드를 봐도 사실 이해가 잘 안됬따.

그래서 코드를 하나하나 차근차근 따봐야겠다는 생각이 들어서 이 포스트를 작성했다

그럼 자~ 시작!

 
 
const http = require('http');
const fs = require('fs').promises;

http.createServer(async (req,res)=>{
    console.log(req.method)
})
.listen(8080,()=>{
    console.log('8080포트 연결')
})

먼저 req.method라는게 get, post등등은 있지만 method라는 객체는 뭔지 모르겠었는데

링크에 주소를 치고 엔터를 치면 get요청이 들어온다.

 

요렇게 말이다.

 

 

const users = '바보'
    if (req.method ==='GET'){
        if (req.url === '/'){
            const data = await fs.readFile('./front.html');
            res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
            return res.end(data);
        } else if (req.url === '/users'){
            res.writeHead(200, { 'Content-Type': 'application/json; charset=utf-8' });
            return res.end(users)
        }
    }

그냥 localhost에 들어가면 front.html을 보여주고

여기서 하나 실험해볼게 /users페이지다.

 

나는 users라는변수를 바보로 했고 이걸 res.end로 보내면 /users에 접속했을때 바보라는 글자가 뜬다.

근데 여기서 중요한건 json파일이다.

 

사실 제이슨에대해서 좀 개념이 이해안되서 싹다 정리해봐야겠다.

 

 

//객체를 json으로
console.log(JSON.stringify('바보'))
console.log(JSON.stringify(true))

객체를 json으로 바꿀때 JSON.stringify()인데 이걸 문자열로 만들어준다. 

JSON이 문자열이니까 그냥 json파일로 만든다고 보면된다.

따라서 불리언 타입인 true도 저 코드로 치면 스트링으로 된다. 못믿겠으면 typeof로 감싸봐.

 

또한 어레이도 바꿔보자.

console.log(JSON.stringify(['하잉', '반가워']))

출력해보면 

이렇게 쌍따옴표로 된다. 이것도 제이슨 형식으로 바뀐거다. parse로 꺼내보면 어레이로 쓸수가 있다.

제이슨으로 바꾸는건 객체도 넣을수 있는데 메서드(함수)는 바꿀수가 없다.

 

제이슨 replacer사용

 

let object = {
    name : 'jacob',
    age : 32,
    job : null
}

이렇게 그냥 객체가 있다

여기서 이 객체의 원하는값만 json화 시킬수 있는데

json리플레이서를 사용하면 된다.

console.log('그냥객체 : ', object);
let objectJson = JSON.stringify(object)
console.log('객체를 오브젝트로 : ',objectJson)
let objectOnlyName = JSON.stringify(object, ['name'])
console.log('이름만 넣은 제이슨', objectOnlyName)

출력해보면

 

이렇게 이름만 넣은 제이슨을 가져올수 있다. 

꼭 JSON.stringify(object, [원하는키값]) 양식으로 써줘야한다. 어레이에 넣어야 된다는 말씀.

 

JSON.parse(제이슨형식)

let objectAgain = JSON.parse(objectJson)
console.log(objectAgain)
console.log(objectAgain.name)

출력해보면