2025-02-20학습 요약

airbus·2025년 2월 20일

프로그래머스

목록 보기
20/93

채널 api 생성

생성 POST /cahnnels
수정 PUT /cahnnels/:id
개별 삭제 DELETE /channels/:id
개별 조회 GET /channels/:id
전체 조회 GET /channels

.route로 동일 path별 정리

app
	.route('/channels')
    .POST((req, res) => {} )
    .GET((req, res) => {} )

app
	.route('/channels/:id')
	.PUT((req, res) => {} )
	.DELETE((req, res) => {} )
	.GET((req, res) => {} )

비어있는 객체인지 확인하는 방법

  • Object.keys() // 문자열의 경우 객체처럼 가능하지만, 숫자의 경우도 '문자열로 변환'되서 처리되지만 키값이 아니기 때문에 매개변수로 사용시 결과가 다름
  • for in 으로 프로퍼티 확인
  • lodash 라이브러리 사용

var는 왜 핸들러마다 선언하는지

db Map에서 id값을 가져와 해당 핸들러에서 사용하기 위해 var로 변수를 선언하는데 왜 각각 선언하는지

var channel = db.get(id)
  • var 변수 키워드는 함수 스코프를 가짐
  • 핸들러 내부에서 선언했기 때문에 각 핸들러에서만 사용이 가능한 것 = 각 핸들러 내에서만 실행됨 = 다른 핸들러에 영향X = 독립적
  • 요청 때마다 각각의 var channel이 생성되고 사용되는 것

.route() 밖에서 선언하면 전역함수로 다른 핸들러에서도 사용이 가능한데 왜 그렇게 하지 않는지

  • 공유되기에 독립적이지 않고, 다른요청에도 영향을 줄 수 있음
  • 다른 요청에 영향이 가기 때문에, 여러 사용자들이 동시에 요청을 보낼시 값이 변경되거나, 충돌이 일어날 수 있음 (동시성 문제)
핸들러 - HTTP reques가 날아오면 자동으로 호출되는 메서드

0개의 댓글