53일차 - express

김민찬·2021년 7월 1일
0

취업으로의 여정

목록 보기
54/196
post-custom-banner

어제 구현한 대문자, 소문자로 바꾸기가 가능한 mini node server를 express로 구현하는 과제를 했다.

프레임워크 Express로 구현한 서버는 http 모듈로 작성한 모듈보다 미들웨어 추가가 편리한 장점이 있다.

http 모듈로 작성하는 서버는 가내 수공업처럼 하나 하나 다 만들고 response를 보내는 것을 한개를 구현하면, 또 다시 처음부터 다음꺼를 구현해야하는 불편함이 있다.

그에 반에 프레임워크 Express는 공장을 생각하면 된다.
컨베이어 벨트를 지나갈때, 미들웨어를 통해서 하나씩 추가를 해 주는 것이다.
대표적으로 cors가 있다.

http 모듈에서 cors헤더를 붙일려고 할때

const corsHeader = {
  'Access-Control-Allow-Methods': 'GET, POST, OPTIONS',
  'Access-Control-Allow-Headers': 'Content-Type, Accept',
  ...
}
  
 
  if (request.Methed === 'OPTIONS') {
    response.writeHead(201, corsHeader);
    response.end()
  }

이렇게 축약을 해도 복잡하게 써야되는데,

cors 미들웨어를 install 하면,

const cors = require('cors')

app.use(cors());

이렇게 간단하게 쓸 수 있다.

오늘의 고생했던 부분

오늘은 JSON때문에 너무 고생을 했다.
서버구현은 약 1시간 만에 끝났는데, 클라이언트에서 서버로 요청을 보낼때 마다

SyntaxError: Unexpected token " in JSON at position 0

이런 오류가 떴다.

그리고 설상가상으로 nodemon으로 서버를 열었는데, 계속 실수로 서버를 종료하지 않고 VScode를 꺼버려서, 서버는 계속 돌아가고 있는데, 끌 수 없는 상황이 온 것이다.
먼저 서버문제는 kill-port npm 이 것을 깔아서 해결했다.

kill -9 

이방법으로 하다가 nodemon이 계속 서버를 다시 구동시켜서 kill-port를 사용하니 해결되었다.

JSON문제를 해결은 우선 서버 문제인지, 클라이언트 문제인지 찾아봤다.

postman을 이용해서 서버에 직접 post요청을 해봤는데, 정상적으로 작동을 했다, 그래서 클라이언트가 서버로 요청을 보낼때, 일어나는 문제라는 것을 알고 클라이언트를 집중적으로 봤다.
그래서 찾아낸 것이 클라이언트가 서버로 요청을 전송할때, JSON형태로 보낼때 발생하는 에러 문제였다.

JSON.srtingify(body) // 변경전
JSON.stringify({text: body}) // 변경후

이와 같이 바꿨더니 오류가 해결이 되었다.

profile
두려움 없이
post-custom-banner

0개의 댓글