BE Study

[BE Study] Day 1 - HTTP 요청/ Server/ 어노테이션(@)

고고잉93 2024. 2. 19. 14:41
728x90
더보기

◈ 강의 섹션 1: 1~5

Server : 어떠한 기능을 제공하는 프로그램, 그 프로그램을 실행하는 컴퓨터.

네트워크 : 

택배 시스템 네트워크
컴퓨터
주소/서울시 00구 00동 00번지 IP/ 244.77.51.9
집주소 별칭/파란집 도메인 이름/spring.com
택배받는 사람 port / 3000

 

데이터를 주고 받는 표준 : HTTP

HTTP 요청

POST/oak/leather 메소드 패스 쿼리
Host: spring.com:3000 헤더
  한 줄 띄기
오크가죽정보 바디

 

API(Application Programming Interface)

정해진 약속을 하여, 특정기능(HTTP 주고받기)을 수행하는것.

 

HTTP응답

요청에 대한 응답을 제공한 컴퓨터가 Server

요청을 한 컴퓨터 Client

 

GET API개발하고 테스트 하기

 // HTTP Method에서의 GET이고 HTTP PATH가 /add인 API로 지정한다.
@GetMapping("/add")

public int addTwoNumbers(@RequestParam int number1,@RequestParam int number2) { 
  // RequestParam = 주어지는 쿼리를 함수 파라미터에 넣는다
  // GET/add?number1=10&number2=20 -> 10 = number1 , 20 = number2

    return number1 + number2;
}

 

addTwoNumbers에 주어지는 변수가 많을경우

package com.group.libraryapp.dto.calculator.request;

public class CalculatorAddRequest {
    private final int number1;
    private final int number2;

    public CalculatorAddRequest(int number1, int number2) {
        this.number1 = number1;
        this.number2 = number2;
    }

    public int getNumber1() {
        return number1;
    }

    public int getNumber2() {
        return number2;
    }
}
@GetMapping("/add")
public int addTwoNumbers(CalculatorAddRequest request) {
    return request.getNumber1() + request.getNumber2();
}

CalculatorAddRequest라는 DTO클래스를 설정 후

RequestParam int number1 → CalculatorAddRequest request

대체 가능

 


※ Question

● 어노테이션(@)를 사용하는 이유와 그 효과는 무엇일까?

  - 우선, 어노테이션 = Annotation은 주석이라는 뜻.

    프로그램에게 추가적인 정보를 제공해주는 메타데이터(meta data: 데이터를 위한 데이터)이다.

    메타데이터란 애플리케이션이 처리하는 데이터가 아니라 컴파일 과정과 실행과정에서 어떻게 컴파일하고 처리할 것

    인지 알려주는 정보이며 다음과 같은 효과가 있다.

        1. 런타임에 특정 기능을 실행하도록 정보를 제공

        2. 빌드나 배포시 코듸를 자동으로 생성할 수 있도록 정보 제공

        3. 컴파일러에게 코드 작성 문법 에러를 체크하도록 정보 제공

 

● 나만의 어노테이션은 어떻게 만들 수 있을까?

@interface 를 사용하여 정의한다.

@Target(ElementType.METHOD) // 어노테이션이 적용될 대상 (여기서는 메서드)
@Retention(RetentionPolicy.RUNTIME) // 어노테이션 정보를 유지할 기간 (여기서는 실행 시간까지 유지)
public @interface MyAnnotation {
    String value() default ""; // 어노테이션 속성 정의
    int count() default 1; // 다른 속성도 추가할 수 있음
}

 

정의 후 적용

public class MyClass {

    // 메서드에 어노테이션 적용
    @MyAnnotation(value = "Hello", count = 3)
    public void myMethod() {
        // 메서드 내용
    }
}
728x90