개발자 도구 : f12
API와 프로토콜의 개념
https://velog.io/@dlife/API-%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C
API는 애플리케이션간 인터페이스이고
TCP/IP같은 프로토콜은 통신 규약으로 네트워크 상에서 데이터를 주고 받기 위한 통신 시
지키는 규약이다
좀 더 쉽게 표현하자면 API는 연결 통로와 비슷한 개념으로
'네이버 맵 API'라는 API가 있다고 가정 했을 때
"네이버 서버(PC)에 있는 맵 기능을 다른 사용자들이 사용할 수 있게 만든 API(통로)"가 되는 것이다
따라서 "네이버에서 맵 API를 제공한다." 라는 말은 "API(통로)를 통해 네이버의 맵 기능을 여러 사람이 사용할 수 있게 프로그래밍하여 제공한다"는 뜻이 된다
프로토콜은 위의 통로로 통신 시 지키는 규약이라고 보면된다
-HTTP 프로토콜은 TCP/IP 위에서(윗계층에서) 돌아가는 프로토콜이다
Lombok
Lombok이란 어노테이션 기반으로 코드를 자동완성 해주는 라이브러리이다.
Getter, Setter, Equlas, ToString 등과 다양한 방면의 코드를 자동완성 시킬 수 있다.
Lombok을 활용하면 엄청난 양의 업무량과 코드 다이어트를 얻을 수 있음
@AllArgsConstructor -->모든 필드를 매개변수로 받는 생성자 생성
@NoArgsConstructor -->기본 생성자 생성
@RequiredArgsConstructor -->final이 달린 필드를 가지는 생성자를 생성@RestController --> ResponseBody+Controller
@Controller 어노테이션을 썼을때 View가 아닌 Data를 반환해야 할때는
@Responsebody 어노테이션을 사용해야 한다.
Data를 반환 해야하는데 @Responsebody를 쓰지 않는다면 반환하는 데이터가 예를 들어 return "hello"
일 때 "hello"에 해당하는 html을 찾고 해당하는 html을 찾지 못 했을 때 에러가 발생한다
매개변수로 전달받은 model.addAttribute("key", "value");
메소드를 이용해서 view에 전달할 데이터를 key, value 쌍으로 전달함.
Jackson
Jackson은 JSON 데이터 구조를 처리해주는 라이브러리 입니다.
Object를 JSON 타입의 String으로 변환해줄 수 있습니다.
JSON 타입의 String을 Object로 변환해줄 수 있습니다.
-->String 타입 텍스트를 json 형태로 클라이언트에게 보내주기
@GetMapping("/json/string")
@ResponseBody
public String helloStringJson() {
return "{\"name\":\"Robbie\",\"age\":95}";
}
-->application json 타입
--> 객체 형태로 반환하지만 스프링 내부적으로 자동으로 json 형태로 변환해준다
@GetMapping("/json/class")
public Star helloClassJson(){
return new Star("Robbie", 95);
}