231108 TIL

SEULBI LEE·2023년 11월 8일
1

TIL

목록 보기
21/25

RequestParam?

컨트롤러에서 파라미터 값을 넘겨받을 때 사용하는 어노테이션이다.
지금까지 듣는 예제에서는 생성자 안에서만 쓰였는데 다른 사용법도 있을까?

@RequestParam("name") String name

  • ( ) 안의 문자열과 변수명이 정확히 일치할 경우 ( )는 생략 가능하다.
    ( ) 안의 문자열은 url에 적힐 내용이다.
    @RequestParam String name

  • 쉼표를 통해 파라미터 값의 나열이 가능하며, Map 형태로 값을 지정하는 것도 가능하다고 하나 유지 보수가 어렵다고 한다.
    @RequestParam String name, @RequestParam Long id

  • html을 동적으로 그려내는 데 사용할 수 있으며, 파라미터가 선언되기만 하고 초기화되지 않았으므로 파라미터 초기화를 반드시 진행해야만 의미가 있다. 당연히 코드 내에서 진행해야 하지만, 직접 url에 쿼리문 형태로 작성해도 가능하다.

  • 쿼리문이란? 데이터베이스에서 어떤 값을 불러오는 방법을 의미한다.
    여러 문법이 있지만 RequestParam의 경우 placeholder(물음표)를 사용하여 url에 표시해준다. 파라미터가 여러 개일 경우 & 를 통해 연결해준다.
    localhost::8080/api/?name=siri&id=1

null값을 대비하며...

정확히는 RequestParam의 4가지 옵션이 있다.

  • name / value
    앞서 적었던 모든 값들은 name 혹은 value이다. @RequestParam(name="name1") String name 원래는 이런 형태였겠지만 별도의 추가 옵션이 없으므로 생략되었다. 정확히는 name1으로 받아온 값을 name에 저장한다.
    name과 value는 완전히 똑같은 기능을 하여 서로 대체하기만 한다. 의미적 차이는 전혀 없다. 다만, name과 value 옵션을 동시에 적으면 안 된다고 한다.

  • defaultValue
    위에서 반드시 파라미터 값을 초기화해주어야 한다고 했는데, 이 옵션을 사용하면 파라미터로 넘어오는 값이 없더라도 동작이 가능하다.
    @RequestParam(name = "id", defaultValue = 123) Long userId
    localhost::8080/api/?name=123

  • required
    파라미터 요구값이 true냐? false냐? (항상 값이 있어야 하냐?) 를 묻는 옵션이다.
    기본형은 true이며 생략되어 있다.


cf. PathVariable은 localhost::8080/siri/1 이 예시처럼 url을 표시해준다.
RequestParam과 많은 부분이 유사하다.
@GetMapping(api/{idd}) @PathVariable("idd") long id
이렇게 url 부분을 수정하여 같이 적어주어야 하며, 변수명은 ( ) 안의 문자열과 일치하게 적어야 한다. 만약 ( ) 안의 문자열과 변수명이 완벽하게 일치한다면 ( )는 생략할 수 있다.


기억하고 싶은 소소한 정보

어떤 파라미터 값을 요구하는지 보고 싶으면 ctrl + p (맥은 cmd + p)

알고리즘 특강에서 기억하고 싶은 키워드
(*) : 포인터가 가리키고 있는 값
& : 주소
포인터는 특정 변수의 메모리주소를 저장합니다.
메모리공간의 중복 생성 없이 직접 값을 불러올 수 있습니다.

가비지 콜렉터가 동작하는 동안은 모든 어플리케이션이 중단됩니다. Stop the world

하루를 마무리하며

required 옵션의 true, false에 대해 아직 이해가 부족하다.
내일 마저 해보자.

0개의 댓글