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