24/12/17(금)
구조: port / path / parameters
- port
- 아파트의 "호"와 비슷.
같은 주소에 다른 가구들이 함께 거주하더라도 호(예: 102호, 302호)로 구분되듯 같은 도메인에 실행되는 프로그램들도 포트를 통해 구분한다.- path
- 파일의 경로를 가리키며, / (슬래시) 뒤에 나오는 애들.
- parameters
- 쿼리 스트링이라고도 부르며, key(파라미터의 이름)=value(파라미터의 값) 형태로 이루어진다. ?(물음표) 뒤에 나열되고, & 기호로 구분되어 여러 개가 존재할 수 있다.
구조 : Method + URL
- 클라이언트가 Request(요청)를 보내면, 서버가 그에 대해 Response(응답)를 보내는 구조.
- Method(Get/Post)
👀Get
현재 시간을 알려주는 API
GET /timeLocalDateTime.*now*() 활용) @GetMapping("/time")
public LocalDateTime nowTime(){
return LocalDateTime.now();
}
👀Post
섭씨를 화씨로 변환해 주는 API
POST /fahrenhueit{
"celsiusDegree": 0
}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
GET /square?numberToSquare=0numberToSquare의 값으로 전달된 숫자(정수)의 제곱@GetMapping("/square")
public int numberToSquare(@RequestParam(required = false) Integer numberToSquare){
if(numberToSquare == null){ //square뒤에 아무것도 안쓰면 0을 return함
return 0;
}
return numberToSquare*numberToSquare;
}
변수와 Path(파일경로)와 같아야한다.
//Path
@GetMapping("/square/{numberToSquare}")
public int numberToSquarePath(@PathVariable int numberToSquare){
return numberToSquare(numberToSquare);
}
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이런거 하나 받아줘야한다.😐 느낀점
아직까지는 잘 모르게땅ㅎㅎ