일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 함수
- JavaScript
- 실행
- app.js
- Web
- 객체정의
- Passport.js
- 설치
- 데이터
- nodemon
- template
- math
- tPerRow hn측
- 객체
- round
- passport
- express
- node.js
- lowdb
- 자동
- /bin/www
- sanitize
- Web2
- nodejs
- dr 학교측
- 생활코딩
- 모듈
- local
- Generator
- 객체란
- Today
- Total
괜찮아 잘하고있어 힘내
48. API와 CreateServer 본문
API : Aplication Programming Interface
우리가 만든 웹 애플리케이션은 Nodejs가 가지고 있는 기능을 호출함으로써 동작하게 된다.
우리가 사용했던 fs.readFile 함수는 우리가 만들지 않았다.
Node.js를 만든 개발자들이 만들었다.
그래서 우리는 fs.readFile이 어떤 원리로 동작하는지 알 수 없다.
Node.js를 만든 개발자들은
Node.js를 이용하는 개발자들에게 파일을 읽을때는 readFile 을 사용하라고
사용설명서를 통해서 말하고 있다.
즉, readFile이라는 함수의 이름과 거기에 들어가는 파라미터, 리턴값은
이 함수를 만드는 Node.js를 만드는 개발자들과
이 함수를 사용하는 Node.js를 이용하는 개발자들간에 약속된 조작장치이다.
이런 조작장치를 Interface 라고 한다.
즉, 우리는 readFile이라는 함수(Inteface)를 실행함으로써 애플리케이션을 만들 수 있다.
애플리케이션을 프로그래밍하기 위해서 제공되는 Interface를 애플리케이션 프로그래밍 인터페이스(API)이라고 한다.
HTTP는 웹브라우저와 웹서버가 서로 통신할때 사용하는 통신규칙이다.
바로 그 통신을 지원하는 Node.js의 기능들이 있다.
1) http라는 모듈을 가져오고 있다.
API 문서에서 HTTP에서 createServer을 찾아보자.
http라는 모듈이면서 객체이기도하다. 그것은 createServer라고 하는 함수가 있는데
함수가 객체안에 있을땐 메소드라고 하기도 한다.
두번째 인자로 requestListener라고 하는 파라미터가 있다.
대괄호 [] 안에 있는 내용은 생략 가능하다는 뜻이다.
그리고 requestListener는 <Function> (함수)라고 적혀있다.
그렇기 때문에 우리가 createServer의 첫번째 인자로 엄청 긴 함수를 사용했던 것이다.
createServer안에 긴 함수를 만들어서 우리는 이름처럼 웹서버를 만든것이다. 그리고 이 웹서버로 외부에서 요청이 들어올때마다 웹서버는 이 첫번째 인자에 해당하는 저 함수를 호출하면서 그 함수에 첫번째 파라미터로는 웹브라우저로부터 들어온 요청에 대한 여러가지 정보를 담고있는 객체인 request를 파라미터를 인자로 준다고 약속되어있다.
그리고 두번째 파라미터의 값으로는 우리가 createServer안에 함수의 구현을 통해서 사용자에게 전송하고싶은 정보, 예를들어
이 처리가 성공했는지, 파일을 찾을 수 없는지 코드값을 실제 내용의 정보를 response를 통해서 응답할 수 있도록
response 라는 객체를 넘겨주는것이다.
그 약속에 따라서 요청한 정보와 우리들이 응답할 정보를 잘 버무려 웹 애플리케이션을 만들게 되는것이다.
createServer라는 함수는 리턴값이 http.Server라는것을 반환하고 있다.
app이라고 하는 변수에 http.Server라는것이 (객체라고 할수있다)담겨있다.
맨 마지막 줄을 보면 app.listen 이라고 되어있다.
api에서 listen을 찾아보면
요청에 대해서 응답할 수 있도록 http서버를 구동시키는 api이 listen이다.
listen이라는 api는 server.listen 이라는 net.Server과 똑같다.
Possible signatrues는 함수의 형태, 형식을 뜻한다.
첫번째 자리에 port가 들어오는 것이 있다. 그리고 생략 가능하다라고 적혀있다.
우리는 마지막 시그니처를 사용하고있었다.
3000번을 적어주면 우리가 만든 웹서버는 listen을 시작할 때 3000번 port를 바라보고있다.
3000번 포트에 귀기울여있다가 웹브라우저로부터 접속이 들어올때 3000번 port로 들어오면
바로 우리가 만든 애플리케이션이 그것에 응답해서 동작하게 되는것이다.
'웹 개발 > Node.js' 카테고리의 다른 글
Node.js 전체 소스 해석 (0) | 2021.01.05 |
---|---|
47. 3. App 제작 - 출력정보에 대한 보안 (0) | 2020.12.29 |
47. 2. App 제작 - 출력정보에 대한 보안 (0) | 2020.12.29 |
47. 1. App 제작 - 출력정보에 대한 보안 (0) | 2020.12.29 |
46. App 제작 - 입력정보에 대한 보안 (0) | 2020.12.28 |