sprint-chatterbox-server 참고링크정리 (http 모듈, express 프레임워크)

flobeeee·2021년 2월 9일
0

Sprint

목록 보기
12/25

처음 서버를 구현해봤다.
이건 스스로 해낼 수 없고, 공식문서를 참고하며 틀을 가져다 써야했다.

1. HTTP 모듈 공식문서

이 링크를 참고해서 구현할 수 있다면, 정말 좋았을 것이다.
하지만 주니어개발자로서, 굉장히 생소하다.
2번 문서가 정말 친절하게 되어있어서, 많은 도움이 됐다.

2. HTTP 트랜젝션 해부

정말 꿀같은 링크다.

let body = [];
request.on('data', (chunk) => {
  body.push(chunk);
}).on('end', () => {
  body = Buffer.concat(body).toString();
  // 여기서 `body`에 전체 요청 바디가 문자열로 담겨있습니다.
});

과제에서 제일 먼저 진행해야 하는 부분은 요청받은 데이터를 가져오는 건데,
이 예시를 활용해서 바로 받아올 수 있었다. (거의 그대로 가져다가 썼다.)

response.write(JSON.stringify(responseBody));
response.end();
    // 주의: 위 두 줄은 다음 한 줄로 대체할 수도 있습니다.
    // response.end(JSON.stringify(responseBody))

이 부분도 중요하다. write를 작성한 후에 end를 사용해야한다.
end를 하면 담겨진 데이터를 클라이언트에게 보낸다. 순서가 중요하다!

이 링크만 잘 활용하면, http 모듈로 서버를 구현할 수 있다.

3. HTTP 상태코드 mdn

http 의 상태코드와 그에 대한 설명을 알 수 있다.
우리가 주로 사용할 코드는 3가지다.

200 OK
요청이 성공적으로 되었습니다. 성공의 의미는 HTTP 메소드에 따라 달라집니다:
GET: 리소스를 불러와서 메시지 바디에 전송되었습니다.
HEAD: 개체 해더가 메시지 바디에 있습니다.
PUT 또는 POST: 수행 결과에 대한 리소스가 메시지 바디에 전송되었습니다.
TRACE: 메시지 바디는 서버에서 수신한 요청 메시지를 포함하고 있습니다.

201 Created
요청이 성공적이었으며 그 결과로 새로운 리소스가 생성되었습니다. 이 응답은 일반적으로 POST 요청 또는 일부 PUT 요청 이후에 따라옵니다.

404 Not Found
서버는 요청받은 리소스를 찾을 수 없습니다. 브라우저에서는 알려지지 않은 URL을 의미합니다. 이것은 API에서 종점은 적절하지만 리소스 자체는 존재하지 않음을 의미할 수도 있습니다. 서버들은 인증받지 않은 클라이언트로부터 리소스를 숨기기 위하여 이 응답을 403 대신에 전송할 수도 있습니다. 이 응답 코드는 웹에서 반복적으로 발생하기 때문에 가장 유명할지도 모릅니다.

4. MIME 타입 mdn

http 요청 및 응답시 전송되는 body의 MIME 타입을 설정해주기 위한 header의 이름은?
content-type

5. Content-type mdn

응답 내에 있는 Content-Type 헤더는 클라이언트에게 반환된 컨텐츠의 컨텐츠 유형이 실제로 무엇인지를 알려줍니다.

요청 내에서, (POST 혹은 PUT처럼), 클라이언트는 서버에게 어떤 유형의 데이터가 실제로 전송됐는지를 알려줍니다. -mdn


클라이언트와 서버는 서로 어떤데이터를 줬는지 content-type을 통해 알려주고,
MIME 는 파일 형식을 알려주는 역할을 한다.
우리과제에서는

headers: {
        'Content-Type': 'application/json'
      }

이렇게 설정하고 진행했다. 'application/json' 이 MIME 타입이다.

6. postman

웹에서는 제대로 작동하지 않으므로, 다운로드해서 사용해야한다.
서버url을 넣고, GET, POST, DELETE 등 메소드를 입력해볼수있다.
디버깅할때 활용하면 편리하다.


지금부터는 http로 서버를 구현한 것을
express를 통해 리팩토링 하는데 사용한 링크를 정리해뒀다.

1. express 공식문서

내가 본 공식문서 중에 제일 친절하다.
우선 설치를 하고, hello world 예제를 통해 정말 쉽게 서버를 만들어 볼 수있다.

예제에서 도메인은 작성하지 않고 port 로만 서버를 만드는데
이는 내 컴퓨터 서버를 이용해서 도메인이 필요없다! (나도 질문해서 알았다!)
http://localhost:3000/

2. 미들웨어 body-parser

진짜 편하다.
req.body 에 JSON 형태로 payload가 담겨져 있다.

3. 미들웨어 cors

요청, 응답에 cors 헤더를 붙일 때 사용하면됩다.
app.use(cores()) 이런 식으로 모든 요청에 대해 CORS 허용 할 수 있다.

4. HTTP 주요 헤더

이건 추가로 보면 좋은 글이다. 정리가 아주 잘 되어있다고 한다.

profile
기록하는 백엔드 개발자

0개의 댓글