mini node server (node.js)

KoEunseo·2022년 8월 12일
0

코드스테이츠

목록 보기
16/45

HTTP

요청(Request)

메소드 + url
GET read
POST create
PUT update
PATCH update
DELETE delete
OPTIONS -

POST /upper
POST /lower

응답(Response)

응답
상태코드 상태메세지
200 성공
300 리디렉션
400 실패(클라이언트)
500 실패(서버)


서버 생성

app.js

//1 서버를 만든다.
const http = require('http');

const server = http.createServer((request, response) => {
  //4. 리퀘스트에 내장된 메서드, url 사용
  const { method, url } = request;
  console.log('서버 열렸나?')
  
  let body = []; //7. body를 가져옴
  request.on('data', (chunk) => { //button.addEventLister('click'=>{})
    body.push(chunk); //chunk: Burrer 01 10 23 43 43 11 이런식
  }).on('end', () => { //eventLister와 비슷하다
    body = Buffer.concat(body).toString(); //데이터 조각을 합쳐서 바디에 보내고, 문자열로 바꾼다.
  // 여기서 `body`에 전체 요청 바디가 문자열로 담겨있습니다.
  });
  if(method === 'OPTIONS'){
    response.writeHead(200, defaultCorseHeader);
    response.end();
    //ACAO: http://localhost:3000 // 여기 허용
  } 
  else if(method === 'POST' && url === '/lower'){
     //6. req.body를 받을 수 없다. 조작이 필요함... express에서는 가능함!!
    response.writeHead(200, defaultCorseHeader);
    response.end(body.toLowerCase());
  } else if(method === 'post' && url === '/upper') {
    response.writeHead(200, defaultCorseHeader);
    response.end(body.toUpperCase());
  } else {  //5. 1요청 1응답 해야함. if elseif else 연결을 해줘야한다.
  //response.end('response') //3. 요청이 오면 응답을 해야한다. 안그럼 계속 로딩함
    response.end('err입니다'); //에러처리
  }
});
//2. 리슨을 해야 서버가 열린다
server.listen(8080, ()=> {
  console.log('서버 열렸다~')
})

const defaultCorseHeader = {
  //디폴트 헤더 생략
}

버퍼 Butter?

버퍼링이라는 말을 이미 알고 있다!
ReadableStream
유튜브는 스트리밍 서비스이다.
chunk : 덩어리.
유튜브에서는 데이터가 한번에 다 들어오지 않고 조각조각 나뉘어서 조금씩 들어온다.

readableStream

네트워크 요청: 크기가 클 수 있다.
fetch를 해보면 body에 readableStream이 들어있다.

CORS

SOP 때문에 동일 origin에서만 리소스를 가져올 수 있다.
origin이 다른 곳에서도 리소스를 가져올 수 있게 하는 것이 cors이다.
origin: 프로토콜 + 호스트(도메인) + 포트
엔드포인트는 달라도 상관없음!

profile
주니어 플러터 개발자의 고군분투기

0개의 댓글