[인턴일기] MVC, POST, GET, REST API, DTO, Entity (작성중)

jiminKing·2024년 10월 14일
0

우당탕 인턴 일기

목록 보기
4/10

오늘 코드리뷰를 하면서 많은 개념을 알게 됐다.
이름만 들어본 것도 있고, 어중떠중 알고 있던 개념들이 있었다. 다시 공부해보자..

📌 MVC란

model, view, controller의 약자이다. 유지보스가 편해지는 코드 구성 방식이다.
출처:XESHOOL출처:XESHOOL

  • Model
    데이터 저장 불러오기 같은거. 데이터와 관련된 부분
  • View
    html, css part 같은걸 사용자한테 보여지는 부분
  • Controller
    전반적 제어가 controller. model과 view를 이어주는 방법

MVC를 지키기 위한 5가지 규칙

1. model은 controller와 view에 의존하지 않아야한다.
(model 내부에 controller와 view에 관련된 코드가 있으면 안된다.)

public class Student {
    private String name;
    private int age;
    
    public Student(String name,int age){
        this.name = name;
        this.age = age;
    }
    public String getName(){
        return name;
    }
    public int getAge(){
        return age;
    }
}

위 코드를 보면 이름과 나이를 가진 학생의 클래스임.
컨트롤러와 뷰에 의존하지 않음. 그에 관련된 코드가 없음.

2. view는 model에만 의존해야 하고, controller에는 의존하면 안된다. (view내부에 model의 코드만 있을 수 있고, controller의 코드가 있으면 안된다.)

public class OutputView{
    public void printProfile(Student student){
        System.out.println(
                "내 이름은 "+ student.getName() + "입니다."
        );
        System.out.println(
                "내 나이는 "+ student.getAge() + "입니다."
        );
    }
}

위 코드를 보면 printProfiled 메소드에 student를 파라미터로 받음. student는 모델에 관련된 코드임. 뷰 내부에 모델에 관련된 코드는 있어도됨. (컨트롤러 금지!)

3. View가 model로 부터 데이터를 받을때는, 사용자마다 다르게 보여줘야하는 데이터에 대해서만 받아야한다.

실제 어플서비스 바탕으로 설명하자면

화면은 2가지로 나뉨.

  • 사용자에게 일관적으로 보여야하는 화면
    - ex) 주소, 전화번호
  • 사용자마다 다르게 보여줘야하는 화면

즉, view는 사용자한테 보이는 ui와 model로부터 받은 데이터가 합쳐진 화면임.
여기서 중요한건, 모든 사용자에게 똑같이 보여줘야하는 부분(어플배경=흰색, 주문하기 글씨, 배달 정보 글씨) 등 이런 정보는 model로부터 받으면 안되고 view 자체가 가져야하는 것임.

4. Controller는 Model과 View에 의존해도된다.
(Controller 내부에는 Model과 View의 코드가 있을 수 있다.)

public class Controller{
    public static void main(String[] args) {
        Student student = new Student("기철", 25);
        OutputView.printProfile(student);
    }
}

컨트롤러는 모델과 뷰의 중개자 역할도 하면서 전체 로직을 구성하기 때문이다.

5. View가 Model로부터 데이터를 받을때, 반드시 Controller 에서 받아야한다.
위에 controller 코드를 보면, 모델인 student 클래스로 부터 학생의 데이터를 만들어서 view의 printProfile method한테 파라미터로 전달함.

한마디로, 뷰가 모델로부터 데이터를 받을때는, 컨트롤러 코드 내에서만 받아야함.

MVC 요약


HTTP Method란?

클라이언트와 서버 이 사이에서 일어나는 요청(request)와 응답(resposne) 데이터를 전송하는 방식이다. 쉽게 말하자면, 서버가 수행해야할 행동(동작)을 지정하는 요청을 보내는 방법이다.

HTTP 메소드의 종류는 총 9가지가 있다. 이 중 주로 쓰이는 메소드는 5가지로 보면 된다.

📌 GET?

목적 : 내가 이거 줄테니까, 이거와 관련된 무언가를 나에게 줘!(얻기 위함)

서버를 요청할때 무언가를 얻는게 목적임. 요청 url에 데이터를 붙여서 전송(얻기)

  • 요청 url 제한이 있음
  • 전송 데이터 노출에 따른 위험
    why? url에 다 노출됨.

📌 POST?

목적 : 서버에다가 데이터를 주는게 목적(전달하기 위함)
http body 몸체에다가 데이터를 담아서 전송(보내기)

  • 데이터 전송 길이에 대한 제한이 없음.

  • HTTP REQUEST BODY에 데이터를 담으므로 노출이 안됨.
    - 아이디, 비번 get으로 하면 안전하고, Post가 안전하다! 그래서 post 는 보안성이 좋다? => 절대 아님. 보안성과 아무상관없음. body에 있는 정보는 중간에 가로채면 다 보임. 암호화 되어있는 프로토컬이 추가되어야함.

    HTTP + SSL = HTTPS

PUT

DELETE

📌 REST API

📌 DTO

📌 VO란?

📌 Entity

📌 래비댕큐..?네?

📌 File Queue

📌 DDL


profile
숨쉬는 대학생

0개의 댓글