본문 바로가기

Node.js공부/Node.js 원활한 사용을 위한 세부 공부

express 관련 정리(Application, Request, Response, Routing)

반응형

익스프레스는 크게 네 가지 부분으로 이해하면 됩니다. Application, Request, Response, Routing


1. Application

불러온 익스프레스 객체에는 하나의 함수가 할당되는데 그 함수를 실행하면 익스프레스 객체가 생성됩니다. 익스프레스 클래스를 이용해 익스프레스 객체를 만든다고 생각하면 되는데, 이것을 익스프레스 어플리케이션(Application)이라고 하는데 우리 코드에서는 app 상수에 할당했습니다.


1) use()함수를 통한 미들웨어 추가

익스프레스에서 서버의 기능들이 미들웨어 형태로 존재합니다. 익스프레스 인스턴스의 use() 함수로 미들웨어들을 추가할 수 있습니다. 예를 들어, 서버에서 정적파일 (static file)을 호스팅 할 때에는 다음과 같이 정적 파일설정을 위한 미들웨어를 추가할 수 있습니다.


app.use(express.static('public'));

앞으로 API 서버 기능을 확장하면서 필요한 미들웨어를 찾아서 추가할 예정입니다.



2) listen() 함수를 통한 서버 구동

어플리케이션의 또 하나의 기능은 서버를 구동하는 역할인데요, listen()함수를 이용해 서버가 클라이언트의 요청 대기 상태로 들어갈 수 있습니다.



3) get, post, put, delete() 를 통한 라우팅 기능

어플리케이션은 라우팅 기능도 수행합니다. 서버는 나름대로 자원을 관리하는 몇가지 기능을 가지고 있습니다. 만약 클라이언트로부터 어떤 요청이 있을 때 서버는 가지고 있는 기능 중에 적절한 것을 찾아서 응답해 줘야하는데 이 두가지를 연결해 주는 것을 라우팅이라고 합니다. 즉 다시 말하면, 클라이언트 요청과 서버의 로직을 연결하는 것입니다.

우리는 get() 함수를 이용해 ㅛ청 메소드 GET을 설정할 수 있으며, 첫번째 파라미터로 경로 설정, 그리고 두번째 파라미터에 콜백함수가 작동하도록 설정할 수 있습니다.



2. Request

콜백함수에서 전달해 주는 1번째 파라미터 req는 익스프레스 요청(Request)객체라고 합니다. 요청 객체는 말 그대로 서버로 요청한 클라이언트의 정보에 대해 담고 있습니다. 하나의 객체 형태로 되어 있는데 키와 함수들로 구성되어 있습니다. 우리가 사용하는 키는 아래와 같습니다.

- req.params: url 파라미터 정보 조회

- req.query: 쿼리 문자열을 조회

- req.body: 요청 바디를 조회



3. Response

콜백함수에서 전달해주는 2번째 파라미터 res는 익스프레스 응답 객체(Response)라고 합니다. 응답 객체는 요청한 클라이언트에게 응답하기 위한 함수들로 구성된 객체입니다. 우리는 아래 함수들을 사용합니다.

- res.send()

- res.json()

- res.status()



4. 서버쪽 REST API

서버의 응답은 두 부분으로 구분할 수 있습니다. 헤더와 바디. 바디는 제이슨(json)타입으로 응답하는 것인데 앞으로 진행하면서 다뤄볼 것입니다. 그 중에서 헤더의 상태코드(Status Code)를 잘 사용하면 다양한 정보를 담아서 클라이언트에게 전송할 수 있습니다.


응답헤더의 상태코드는 세 자리 정수로 되어 있는데 크게 세 분류가 있습니다. 

- 2XX: 성공

- 4XX: 클라이언트 요청 에러

- 5XX: 서버 응답 에러


1) 2XX: 이 상태코드는 클라이언트 요청이 올바르고 서버도 제대로 응답할 수 있을 때 보내는 코드입니다.


200: success. 대부분의 성공 응답에 200번 상태코드를 사용

201: created. POST 메소드로 자원 생성을 요청하고, 서버쪽에서 자원 생서에 성공하면 201 상태코드를 클라이언트로 응답

204: No Content. 서버에서 성공했는데 응답할 바디가 없을 경우 204 상태코드 반환



2) 4XX: 클라이언트 요청이 잘못 되었을 경우 응답하는 코드


400: Bad Request. 클라이언트에서 파라미터를 포함하여 서버 API를 요청하는데 파라미터가 잘못되었을 경우 응답하는 코드

401: Unauthorized. 인증이 필요한 API 에 대해 인증되지 않은 요청일 경우 401을 응답합니다. 예를 들어 OAuth를 사용할 때 엑세스 토큰(access token)이 유효하지 않을 경우입니다. 

403: Forbbiden. 401과 유사. 개발자마다 해석이 다르나 대부분 로그인 실패

404: Not found. 조회할 자원이 서버에 없는 경우. 웹브라우저로 어떤 페이지를 찾을 때 그 페이지가 없는 경우 보통 404

409: Conflict. 클라이언트에서 POST 메소드로 서버에게 자원 추가를 요청했을 때 아마 그 자원이 서버에 있어서 자원을 추가할 수 없는 경우


반응형