JSON.parse()
: parse 메소드는 string 객체를 json 객체로 변환시켜줍니다.
JSON.stringify()
: stringify 메소드는 json 객체를 String 객체로 변환시켜 줍니다.
get
요청 시 데이터 객체를 클라이언트에 stringify
후 전달한다.
// 서버의 데이터를 담는 곳이 results라 가정
const data = JSON.stringify(results)
post
요청 시 chunk데이터를 parse
해서 저장해야 한다.
chunk데이터는 Buffer
형식으로 나온다.
let body = "" // 가져온 chunk데이터를 바디에 넣는다.
const data = JSON.parse(body)
let body = [] // 가져온 chunk데이터를 배열로 받는다면,
body.push(chunk); // 다음과 같은 방식을 사용해서 데이터를 가공한 뒤,
// parse해서 저장할 수도 있다.
body = Buffer.concat(body).toString();
```
** 서버에서 데이터를 건드릴 때는 ``parse``해야 하고, 이를 보낼 클라이언트에
보낼 때에는 ``stringify`` 해야 한다. **
## RESTful API / CommonJS
* RESTful API
* REST? 웹 서비스를 만드는데 사용되는 제약 모음
* 리소스 마다 서로 다른 API 규칙이 존재한다.
* 설계 시 정해진 규칙에 따르기로 하면 API 사용자들이 다른 API도 쉽게 파악 가능케 함
* 설계 가이드 레퍼런스
1. https://meetup.toast.com/posts/92
2. https://sanghaklee.tistory.com/57
* CommonJS
* 핵심은 모듈화이다. 모듈을 어떻게 정의하고, 어떻게 사용할 것인가에 대한 것이다.
* module.exports 와 exports 비교
* module.exports는 객체이고, exports는 module.exports를 참조하는 변수.
* 결국 module.exports을 반환
## Socket.io
![image.png](https://velog.velcdn.com/post-images%2Fbathingape%2F86c70760-3aba-11ea-9dad-bffc9c3f68c6%2Fimage.png)
* Socket.io는 JavaScript를 이용하여 브라우저 종류에 상관없이 실시간 웹을 구현할 수 있도록 웹 소켓기술을 하나의 API로 일관성 있게 추상화한 기술이다.