Express와 서버 공부하기

나만무 8일차 TIL

정글일지 48

날짜

2023년 6월 8일 목요일

계획

  • colyseus 코드 이해하기
  • 팀원들한테 잘해주기
  • 서버 구현 및 MongoDB 연결
  • 회원가입 시 입력되는 유저 데이터 저장 기능 구현
  • Express 서버 구조 이해하기

결과

  • Express 서버에 대해 조금은 알게 됐다.
  • 오늘 코치님과 면담을 진행했다. 현재 개선한 계획에 대해 아쉬움을 드러내셨다.
  • 데이터를 어떻게 지칭(?)하는 지는 감을 잡았는데 실제로 어떻게 저장되는지 눈으로 확인하지 못했다.
  • 회원가입과 관련된 HTML 을 대충 구현한 후 실제 가입 시 데이터가 저장되는지 확인해야 한다.

TIL

node.js 로 구현한 서버

ip : 일종의 대표번호

port : 일종의 ARS 내선번호

우린 naver.com 으로 들어가지만 사실 80번 port로 들어간다.

각 port마다 다른 프로그램 실행시킬 수 있다.

그럼 유저 데이터, 방 데이터 등을 각각 다른 포트에 집어넣으면 되는 거겠지..?

app.get('/',()=>{})

app.get : HTTP 메소드, 요청의 적, 종류를 알리는 수단

프론트 -> 백 데이터 요청(Request)

Get : 주소창에서 데이터 전달

Post : 주소창X, 내부적으로 body에 데이터 전달

/ : 라우팅(Routing)

특정 포트안에 들어가도 여러가지 파일이 있을것. 내 블로그 안에 csapp, essay, jungle 처럼.

(req,res)=>{res.send('Hello World!')} : 콜백함수

함수(파라미터) => 함수(끝나고 실행할 함수) : 앞에 적힌 함수 끝나고 그다음 실행할 함수를 의미

req : 요청을 보내는 것(request)

res : 응답을 보내는 것(response)

변수(params)로 받을 수도 있다.

1
2
3
app.get('/user/:id', (req,res)
       const q = req.params
       console.log(q))

localhost:3000/user/myid 접속 => 콘솔창에 {id: 'myid'} 나타난다.

q.id 로 쓰면 myid만 나타남

1
2
3
4
app.get("/user/:id", (req, res) => {
  const q = req.query;
  console.log(q);
});

query : 주소창에 ? 뒤에, q = jun 처럼 key : value 형태로, 여러개는 &를 통해 잇는다.

Post 는 const q = req.body; 형식으로 쓴다.

예제)

API 서

주소창에 받는 것에 따라 다르게 출력하기

1
2
3
4
5
6
7
8
9
10
11
12
13
app.get("/sound/:name", (req, res) => {
  const { name } = req.params;

  if (name == "dog") {
    res.json({ sound: "멍멍" });
  } else if (name == "cat") {
    res.json({ sound: "야옹" });
  } else if (name == "pig") {
    res.json({ sound: "꿀꿀" });
  } else {
    res.json({ sound: "알수없음" });
  }
});

localhost:3000/sound/??? 에 따라 출력 다름

회고

서버를 구현한다는 것에 조금은 더 가까워진듯 하지만 여전히 갈길이 멀다. 내가 구현해야할 것에 비하면 너무 걸음마 단계다. 내일은 확실히 회원가입으로 유저가 입력한 데이터를 저장하는 것을 완료하고 게임쪽에 신경을 쏟아야 할듯 하다.

오늘 코치님께 피드백을 받았다. 우린 알고리즘과 관련된 공부를 조금 재밌게 하는 서비스를 원했다. 혼자 공부도 할 수있고, 다른 사람과 경쟁을 할 수도 있는 그런 시스템. 하지만 이게 오히려 애매하게 보여지는 듯 하다. ‘재미없는데 재밌는 척 하는 학습만화’라는 비유를 코치님이 쓰셨을 때, 정말 그런가.. 생각이 들었다. 사실 우린 ‘코딩’, ‘알고리즘 공부’가 재밌어 지길 바라는 마음보다는 어차피 해야하는거 다른사람에게 자랑도 할 수있고 혼자 하는것보다 특정 서비스 내에서하면 좀 더 낫지 않을까 하는 마음이긴 했다. 아직 구성에 대한 변경은 하지 않았다. 우리가 옳다고 믿는게 아니라, 지금은 우선 다음주 중간 발표때 발표해야할 데모 구현에 집중하기로 했다. 핵심 기능 구현에 최선을 다하면서, 혹은 다 한 뒤에 방향성을 결정하는게 맞다고 생각한다. 오늘 면담때도 어디까지 구현해봤냐는 코치님의 물음에 답하지 못했다. 눈으로 찾아보며 될까 안될까를 고민했지만, 차라리 그 시간에 코드를 붙여넣어봤어야 했나..? 라는 생각도 들고.. 아무리 내가 경험이 없는 리더라지만 여러모로 중심을 못잡고 있는 듯 해서 팀원들에게 마음이 많이 안좋다.

중이염은 낫기는 커녕 이제는 열까지 나고 두통도 생겨버렸다. 죽기야 하겄나.. 죽을 것같다는 느낌이 들긴 하는데 그래놓고 죽은적은 없으니 뭐

팀원들한테 미안하단 말좀 그만하고 싶다.