Spring 구조

춤인형의 개발일지·2024년 12월 18일

Spring

목록 보기
1/8

24/12/17(금)

URL

구조: port / path / parameters

  • port
    • 아파트의 "호"와 비슷.
      같은 주소에 다른 가구들이 함께 거주하더라도 호(예: 102호, 302호)로 구분되듯 같은 도메인에 실행되는 프로그램들도 포트를 통해 구분한다.
  • path
    • 파일의 경로를 가리키며, / (슬래시) 뒤에 나오는 애들.
  • parameters
    • 쿼리 스트링이라고도 부르며, key(파라미터의 이름)=value(파라미터의 값) 형태로 이루어진다. ?(물음표) 뒤에 나열되고, & 기호로 구분되어 여러 개가 존재할 수 있다.

업로드중..

HTTP

구조 : Method + URL

  • 클라이언트가 Request(요청)를 보내면, 서버가 그에 대해 Response(응답)를 보내는 구조.
  • Method(Get/Post)

👀 Method 예제

👀Get
현재 시간을 알려주는 API

  • input: GET /time
  • output: 현재 시간 (LocalDateTime.*now*() 활용)
 @GetMapping("/time")
    public LocalDateTime nowTime(){
        return LocalDateTime.now();
    }

👀Post
섭씨를 화씨로 변환해 주는 API

  • input: POST /fahrenhueit
    {
      "celsiusDegree": 0
    }
  • output: celsiusDegree의 값으로 전달된 섭씨 온도를 화씨 온도로 변환한 값
@PostMapping("/convert-c-to-f")
double convertBody(@RequestBody ConvertDto dto) {
    return dto.getDegreesC() * 9 / 5 + 32;
}

http를 신경쓰는 애는 컨트롤러이다.

📌http에서 Request(요청)를 보낼 때 데이터를 전송하는 3가지 방법

  • 쿼리스트링 : 읽기용 데이터를 전달(검사x , 있는지 없는지만 판단)
  • Path : 구체적인 자원/ 번호
  • Request Body : 쓰기 데이터(요청 받기)- 로그인/회원가입같은 민감한 영역에 대해 작성

👀예제
제곱 계산해 주는 API에 대해 query String, path, request Body 3가지로 나타내보자

제곱 계산해 주는 API

  • input: GET /square?numberToSquare=0
  • output: numberToSquare의 값으로 전달된 숫자(정수)의 제곱

Query string

@GetMapping("/square")
    public int numberToSquare(@RequestParam(required = false) Integer numberToSquare){
        if(numberToSquare == null){ //square뒤에 아무것도 안쓰면 0을 return함
            return 0;
        }
        return numberToSquare*numberToSquare;
    }

Path

변수와 Path(파일경로)와 같아야한다.

//Path
    @GetMapping("/square/{numberToSquare}")
    public int numberToSquarePath(@PathVariable int numberToSquare){
        return numberToSquare(numberToSquare);
    }

Request Body

body : json(record 필요)
@RequestBody에 데이터타입 + 변수명
post일때 사용

//recore
public record SquareRequest(int numberToSquare) {
}


@PostMapping("/square")
    int numberToquareBody(@RequestBody SquareRequest numberToSquare){
        return numberToSquare.numberToSquare() * numberToSquare.numberToSquare();
    }

🔺
RequestParam이 기본이라 생략이 가능하고, 나머지 path, body는 꼭 붙여줘야 한다.

  • 데이터 타입에 소문자는 그 변수에 null이 절대 들어오면 안된다.
  • 데이터 타입의 대문자는 그 변수에 null을 기본값으로 받기 때문에 requ? -> false이런거 하나 받아줘야한다.

😐 느낀점

아직까지는 잘 모르게땅ㅎㅎ

0개의 댓글