1. 주소 문자열과 요청 파라미터 다루기
- 노드에서는 url 모듈을 사용
- 예를 들어 주소 문자열이 https://google.co.kr/?adfasf=123 이렇게 있다 하면
url 모듈이 주소를 파싱하여
protocol: 'https'
host: 'google.co.kr'
query: '?뒤의 것들'
처럼 읽어준다. - 이 때 주로 사용하는 메서드는 parse(), format()이 있다.
- parse(): 주소 문자열을 파싱하여 URL 객체를 만들어 준다.
- format(): URL 객체를 주소 문자열로 반환한다.
- 쿼리스트링을 더 쉽게 표현할 수 있는 querystring 모듈도 있다.
2. 이벤트 이해하기
- 노드는 이벤트 기반으로 비동기로 처리한다.
- 이벤트? -> 한쪽에서 다른 쪽으로 어떤 일이 발생했을을 알려주는 것.
- 다른 쪽에서 이벤트 발생을 캐치하고 싶다면 EventListener를 등록해야 함.
- 노드에서는 이벤트 관리를 위해 EventEmitter 객체가 만들어져 있음.
- EventEmitter의 주요 메서드
- on(event, listener): 지정한 이벤트의 리스너 추가
- once(event, listener): 지정한 이벤트의 리스너를 추가하지만 한 번 실행한 후에는 자동으로 리스너가 제거됨.
- removelistener(event, listener): 지정한 이벤트에 대한 리스너를 제거함.
- emit(): 이벤트를 다른 쪽으로 전달.
3. 파일 다루기
- 노드의 기본은 비동기식이지만 동기식 IO를 처리할 때는 메서드이름에 Sync를 붙인다.
- fs 모듈은 파일 시스템에 접근하게 해주는 모듈이다.
- fs.readFileSync -> 동기식 읽기 / fs.readFile -> 비동기식 읽기
- fs.writeFileSync / fs.writeFile
- 파일을 직접 열고 닫으면서 읽기/쓰기
- open(path, flags, [mode], [callback])
- read(fd, buffer, offset, length, position, [callback]): 지정한 부분의 파일 내용을 읽어들이기
- write(fd, buffer, offset, length, position, [callback]): 지정한 부분에 데이터를 쓰기
- close(fd, [callback])
- open으로 열 때의 플래그
- r: 읽기에 사용. 파일이 없는 경우 예외가 발생
- w: 쓰기에 사용하는 플래그. 파일이 없으면 만들어지고 파일이 있으면 이전 내용을 모두 삭제함.
- w+: 읽기와 쓰기에 모두 사용하는 플래그. 파일이 없으면 만들어지고 파일이 있으면 이전 내용을 모두 삭제.
- a+: 읽기와 추가에 모두 사용하는 플래그. 파일이 없으면 만들어지고 있으면 이전 내용에 새로운 내용을 추가함.
- 읽거나 쓸 때는 buffer 객체를 만들어서 넣는다. Buffer 객체는 바이너리 데이터를 읽고 쓰는 데 사용함.
- 버퍼 단위가 아닌 스트림 단위로 파일 읽고 쓰기도 가능하다.
- createReadStream(path, [options])
- createWriteStream(path, [options])
4. 로그 파일 남기기
- 책에서는 winston 모듈을 사용했는데 나는 직장에서 morgan을 쓰고 있기 때문에 이 부분 요약은 생략하겠음.
- https://github.com/expressjs/morgan
- morgan은 이런 놈이다. 현재 morgan의 기본 제공 포맷중 dev를 사용하고 있다.
- 공식 readme에 이렇게 나와있다.
- 콘솔에는 이런식으로 출력된다.
GET /api/search/home 200 70.650 ms - -
'Backend > node.js' 카테고리의 다른 글
6. Postgresql을 node.js에 연결하기 (0) | 2022.04.19 |
---|---|
5. 노드로 웹 서버 만들기 (0) | 2022.04.19 |
3. node를 이해하기 위한 자바스크립트의 기본 (0) | 2022.04.19 |
2. 노드의 전역 객체, 변수, 모듈 (1) | 2022.04.19 |
1. node js는 무엇일까? (0) | 2022.04.18 |