회고록 (24.04.29 - 24.05.05 )

JSLEE·2024년 5월 5일

1. 공부했던 내용들

  • Postman을 이용한 request
  • express모듈을 이용한 request 처리 & respond (GET, POST, DELETE, PUT)
  • find() 메소드
  • Boolean( { },[ ] ) 는 true 값
  • Object.keys() 메소드
  • express - app.route()
  • express - express.Router()
  • ERD 란?

2. 궁금했던 점들

프로그래머스 데브코스 강의를 수강하면서, 중간중간에 궁금한 점들이 떠오른 것들을 정리해보았다.

12. map 자료형(2) / generator 맛보기

  • generator에 사용된 미들웨어의 기능이 뭘까?
  1. var logger = require('morgan'); & app.use(logger('dev')) :
    morgan은 node.js 를 위한 HTTP request logger middleware 라고 명시되어 있다.
    morgan을 미들웨어로 사용하고자 할 때, 다음과 같이 작성한다.
    app.use(morgan(format, options))
    여기서, format은 다음과 같이 3가지 방식을 제공한다.
    사전정의된 format을 이용할 수 있고, 사전정의된 token들을 이용할 수 있고,
    사용자 커스텀 format을 사용할 수 있다.


    option으로는 다음을 제공한다.

    immediate : 원래 morgan은 기본적으로 request, respond를 받고 log를 출력하지만, immediate=true옵션을 사용하면 요청에 대한 로그만 기록하게 한다.
    skip : skip:callback 을 통해, 사용자가 원하는 로그만 기록할 수 있게 한다.
    stream : 로그 데이터를 파일로 생성할 수 있게 한다.

기본적으로 제공되는 predefined-format은 다음과 같다.

  1. app.use(express.json()) : request의 body값이 JSON 형식일 때, 자동으로 파싱해서 객체로 만들어주는 미들웨어이다. POST 메소드처럼, request에 body값이 존재할 때, 해당 미들웨어를 반드시 사용해줘야 한다.

  2. app.use(express.urlencoded({ extended: false })) :
    request에서 URL-encoded 형식의 데이터를 파싱해서 객체로 만들어주는 미들웨어이다. extended가 true 일 경우, 복잡한 데이터를 파싱할 수 있게 해주고,
    extended가 false일 경우, 덜 복잡한 데이터를 파싱해준다. 이 경우의 성능이 더 좋게 작동한다.
    그래서, 복잡한 데이터는 뭐고, 덜 복잡한 데이터는 뭔데? 라는 의문이 생길 수 있다.
    URL-encoded 형식의 데이터를 Postman의 body를 통해 살펴보자.

    urlencoded에는 raw 형태와 다르게, 표 형식으로 key, value 칸이 나뉘어져있다.
    단순한 데이터란, key = "key1" , value = "value1' 와 같이 정말 단순한 데이터를 의미한다.
    복잡한 데이터란, key = "key1" , value = { "key1-key1" : "value1"} 처럼, 중첩된 구조를 가진 데이터를 의미한다. 따라서 이 구조에서는 extended 옵션을 true로 바꾸어주면, 적절하게 파싱하여 객체로 반환해준다.

  3. var cookieParser = require('cookie-parser'); & app.use(cookieParser()) :
    cookie-parser 는 클라이언트의 cookie에 대한 데이터를 파싱해주는 미들웨어이다. request에서 쿠키에 대한 정보를 전달해줘야하는데, 이건 추후에 알아보도록 하겠다.

  4. app.use(express.static(path.join(__dirname, 'public'))) :
    express.static은 서버의 HTML,CSS,JS,이미지 파일 등에 직접 접근할 수 있도록 해주는 미들웨어이다. 이 미들웨어는, res.sendFile 메소드 등과 같이 이용하게 된다. express.static(path) 형식으로 작성되어, path에 대한 접근 권한을 준다고 생각하면 될 것 같다. 즉, 외부에 유출되면 안되는 파일들에 대해서는 'public' 디렉토리에 저장하면 안된다는 것을 의미한다.

13. express와 POST메소드 (Postman) - (0429)

  • 웹브라우저, postman에서 URL에 http를 생략해도 되는 이유는?
    => 웹브라우저 단계에서, http나 https를 작성하지 않으면 기본적으로 해당 http프로토콜으로 접속을 시도하게 되고, 웹페이지에서 보안된 데이터의 전송이 필요하면 https로 저절로 redirection하게 설정되어 있기 때문이다.
    출처 : https://www.quora.com/Why-do-we-use-http-while-we-can-open-any-website-without-http-or-directly-with-www

  • Postman은 테스트 용도로 request를 보내는 것이라고 알고있는데, 실제 우리가 사용하는 웹페이지에 request를 요청하려면 어떻게 해야하나?
    => Ajax , Axios, fetch 등을 이용하여 request를 보낼 수 있다.

14. express - GET, POST, DELETE, PUT - (0430)

  • 리팩터링(Refactoring)이란?

    리팩터링(refactoring)은 소프트웨어 공학에서 '결과의 변경 없이 코드의 구조를 재조정함'을 뜻한다. 주로 가독성을 높이고 유지보수를 편하게 한다. 버그를 없애거나 새로운 기능을 추가하는 행위는 아니다. 사용자가 보는 외부 화면은 그대로 두면서 내부 논리나 구조를 바꾸고 개선하는 유지보수 행위이다.
    리팩터링이란?-Wikipedia

즉, 리팩터링이란 우리가 작성한 코드에서, 동작의 변화 없이 가독성이 좋도록 코드를 수정하는 것을 의미한다. 여러번의 리팩터링을 통하여 다른 사람들도 쉽게 볼 수 있는 클린 코드가 될 수 있도록 해야한다.

17. express.Router, ERD란? - (0503)

  • 수업 내용 중 회원의 채널을 조회할때, GET 메소드의 Body값에 userId값을 전달하여
    조회를 했는데, body에 값을 실어서 request하려면 POST 메소드를 사용하라고 했었는데 어떻게 가능한걸까?
    => 권장되지는 않는 사항이지만 GET메소드에서도 request에 body값을 작성할 수 있게 되었고, 코드에서 app.get을 app.post로 바꾸게 되면 채널 생성의 API와 URL이 겹치게 되어서 그랬던 것 같다.
    userId 같은 개인정보는 헤더의 JWT 토큰에 숨겨서 전달한다고 한다.

  • includes() 메소드는 뭐지?
    include는 다음과 같은 형식으로 작성된다.
    includes(element, start_index)
    이 메소드는 주로 문자열배열에서 사용되고, Boolean 자료형을 반환한다.

let text = "Hello, world"
text.includes("Hello") // true

let arr = [1,2,3,4,5]
arr.includes(6) // false

include()는 Boolean 자료형을 반환하고, find()는 해당 요소를 반환하니까, 목적에 맞게 잘 선택해서 사용하도록 하자.

3. 좋았던 점

  • 강의들을 밀리지 않고 수강 완료
  • 수업 내용 중, 이해 못한 부분이나 궁금한 점 메모 및 조사

4. 부족한 점

  • 강의 내용 외, 개인 공부 시간의 부족
    => 어떤 공부를 할건지, 갈피를 확실히 정하고 공부 시간 확보하기.
profile
공부한 내용들을 정리하기 위해 사용하는 블로그입니다.

0개의 댓글