shortly MVC pattern

YoungJoon Suh·2022년 4월 12일
0
post-thumbnail
  1. controller 디렉토리 생성
    controllers/links 폴더 밑에 index.js 파일을 생성

  2. app.js 파일안에 코드 추가
    app.use('/', indexRouter);
    app.use('/links', linksRouter);
    클라이언트가 해당 경로로 요청을 보냈을 때, indexRouter와 linksRouter를 실행하게 하는 듯 싶다.

  3. routes 폴더 아래에 index.js는 이미 작성되어 있으므로 links.js 파일을 수정해 주었다. 라우팅 해주는 파일에서는 컨트롤러의 파일을 (기본 index 파일을) 불러오게 작성을 해준다. 그러면 저 linkController index.js에 들어가 보면 get, post, redirect 함수가 구체적으로 적혀 있을 것이다.
    함수라는 것이 동작하는 기능을 수행하기 위해 만들어 졌으니까 get, post, redirect가 구체적으로 어떤 역할을 하는지 어떤 동작을 하는지 정의하는 곳이 바로 controllers의 역할일 것이다.
    리다이렉션이란 어떤 특정 페이지를 접속할 때 해당 페이지를 다시 렌더링 한다. 리다이렉션(redirection)은 컴퓨팅에서 표준 스트림을 사용자 지정 위치로 우회할 수 있는 다양한 유닉스 셸을 포함한 대부분의 명령어 인터프리터에 일반적인 명령이다. 방향 지정, 방향 변경으로도 부른다.
    어떤 페이지에 접속했을 때 원하는 해당 url의 화면이 아니라 로그인을 하라는 창으로 넘어가 버리는 것을 리다이렉션 이라 했던 거 같다.
    router.get('/:id', linkController.redirect)
    리다이렉션도 get 방식으로 가져온다는 사실을 확인했다.

  4. modules/utils.js
    getUrlTitle 이라는 함수가 정의됨과 동시에 export 되어 있다.
    url 주소에서 meta 태그 중 title이라는 것의 알맹이를 뽑아오는 기능을 하는 듯 싶다.
    이것을 controller에서 사용할 것이다.

  5. controllers/links의 index.js
    컨트롤러 역할을 하는 파일에서 해당 (url) models를 불러와야지,
    models에서 controller를 참조하게 하면 MVC 패턴에 어긋난다고 한다.
    그래서 models의 url model을 불러오고
    (django의 models.py, urls.py, views.py 와 비슷하다.)
    modules내 utils도 동일하게 불러왔다.

5-1. urls의 테이블 모든 내역을 다 불러온다. (get)

5-2. url 테이블에 값 넣어보기 (post)
sequelize 구문인 create로 작성해 넣는다.

5-3. redirect 작성하기

development가 기본환경으로 설정되어 있다.
const env = process.env.NODE_ENV || 'development';

개발 환경, 테스트 환경, 각각의 환경에 따라 다른 host와 패스워드 등을 사용하기 때문에 환경을 세가지로 나눈다고 한다.
모델을 생성할 때 모델의 이름을 정해주고 각 칼럼의 이름과 형식을 지정해 주어야 한다. 이때 id, created_at, updated_at 칼럼은 자동으로 생성된다.
npx sequelize-cli model:generate --name url --attributes url:string,title:string,visits:integer

우리가 만든 데이터베이스에 테이블을 만들어주기 위해서는 마이그레이션이라는 과정을 실행시켜 주어야 한다.
npx sequelize-cli db:migrate

웹 개발에 있어서 라우터는 컨트롤러로 진입할 수 있게 도와주는 endpoint입니다. 라우터에 컨트롤러를 연결해야 합니다.

profile
저는 서영준 입니다.

0개의 댓글