본문 바로가기
소프트웨어 공학

Express로 간단한 API Server 만들기(2)

by iwuooh 2022. 2. 8.

1. Express에서 GET 리퀘스트와 POST 리퀘스트

1. GET 리퀘스트

https://iwuooh.tistory.com/entry/Express에서 작성한 코드를 살펴보자. app 객체의 get 메소드를 사용할 때 아무런 오류 없이 잘 실행되었는데, app 객체의 get 메소드는 request로 들어오는 라우트 핸들러가 path로 온다고 해서 항상 실행되는 것이 아니다. 제대로 실행이 되려면 조건이 하나 더 필요한데, request의 성격을 나타내기 위해 request의 헤드 부분에 존재하는 속성을 메소드라고 한다. 이때 이 request의 메소드가 get이어야 한다는 것이 바로 그 조건이다. 즉, app 객체의 get 함수는 특정 path로 오는 get 메소드를 가진 request를 처리하는 라우트 핸들러를 등록한다.

2. POST 리퀘스트를 보내는 방법

POST 리퀘스트는 GET 리퀘스트보다 처리할 것이 더 많은데, 이는 새로 추가하고자 하는 리소스의 내용이 해당 리퀘스트의 바디에 담겨 있어서 서버에서 바디의 내용을 별도로 처리해줘야 하기 때문이다. POST 리퀘스트에는 데이터가 포함된 바디가 필요하므로 일반 브라우저에서는 실행할 수 없다. 따라서 VS Code에서 REST Client라는 익스텐션을 다운로드하여 실습한다.

 

REST Client를 설치하고 app.js와 같은 위치에 test.http라는 파일을 생성한다. 확장자명을 http로 해야 익스텐션이 이를 인식할 수 있다. test.http 파일에 다음과 같이 코드를 작성하고 상단의 Send Request를 클릭해보면 Response에 기존의 회원정보가 담겨서 보이는 것을 알 수 있다.

이제 POST 리퀘스트를 보내기 위해 app.js파일의 코드를 수정해보자.

우선, 바디가 있는 리퀘스트를 보낼 때는 express에서 app.use(express.json());이라는 코드를 app 객체의 post 메소드의 작성 전에 먼저 작성해줘야 한다. express.json()은 서버로 담겨온 리퀘스트의 바디에 JSON 데이터가 있으면 이를 추출해서 리퀘스트의 바디 프로퍼티로 설정해준다. 이처럼 리퀘스트가 라우트 핸들러에 의해 처리되기 전에 추가적으로 전처리를 하는 함수를 Middleware(미들웨어)라고 한다.

app 객체의 post 메소드의 코드를 살펴보자.

리퀘스트의 바디가 가리키는 객체를 newMember라는 이름으로 받아와서 push 함수로 기존의 회원 배열에 추가한다. 추가된 회원 전체 정보를 리스폰스에 담아서 send로 보낸다.

서버를 실행하고 POST 리퀘스트가 실행되었는지 확인해보자.

POST로 실행한 결과, 추가하려는 회원의 정보가 Response에 제대로 출력됨을 알 수 있다. GET 리퀘스트로 회원의 배열에 실제로 잘 추가되었는지 확인해보자.

GET 리퀘스트를 보낸 결과 기존의 회원 정보 배열에 추가하고자 했던 회원정보가 추가됨을 확인할 수 있다.

 

댓글