API란,
클라이언트와 서버(프론트엔드와 백엔드) 서로간의 약속이다.
클라이언트가 정한대로 서버에게 요청(Request)을 보내면,
서버가 요구사항을 처리하여 응답(Response)한다.
여기서 요청되는 자원의 이름을 구분하여 해당 자원의 상태(정보)를 주고 받는 역할을 해야하는데,
그 역할을 하는 친구가 "REST"이다.
REST란,
앞서 말했듯 요청되는 자원에 이름을 구분해야 되기 때문에 주소에 명사, 요청방식에 동사를 사용함으로써 의도를 명확히 드러내야한다는 의미이다.
※여기서의 동사는 CRUD를 지칭한다.
예시:
- GET /courses → 강의 전체 목록 조회 요청
- GET /courses/1 → ID가 1번인 녀석 조회 요청
- POST /courses → 강의 생성 요청
- PUT /courses/3 → ID가 3번인 녀석 수정 요청
- DELETE /courses/2 → ID 2번인 녀석 삭제 요청
주의사항:
- 주소에 들어가는 명사들은 복수형을 사용합니다.
- /course
- 주소에 동사는 가급적 사용하지 않습니다.
- /accounts/edit
GET(READ)
Get은 데이터를 조회하는(READ) 역할의 API이다.
생성하기.
1. src > main > java > com.filename에 controller 패키지를 만든다.
2. controller안에 ControllerClass.java 를 생성한다.
3. 아래 코드를 입력한다.
@RequiredArgsConstructor
@RestController
public class ControllerClass {
private final CourseRepository courseRepository;
@GetMapping("/api/courses")
public List<Course> getCourses() {
return courseRepository.findAll();
}
}
@코드분석
@RestController:
Controller 클래스에 @RestController를 붙이면, 컨트롤러 클래스 하위 메서드에 @ResponseBody 어노테이션을 붙이지 않아도 문자열과 JSON 등을 전송할 수 있습니다.
이 어노테이션은 초기화 되지않은 필드나, @NunNull 이 붙은 필드에 대해 생성자를 생성해 준다.
주로 의존선 주입 편의성을 위해 사용된다고 한다.
private final CourseRepository courseRepository:
이 클래스를 사용할때 무조건 CourseRepository가 필요하다.
@GetMapping("api/courses"):
아래에 있는 메소드는 Get이다. Get을 불러오는 url을 api/courses로 약속한다.
'🍃웹개발 Spring' 카테고리의 다른 글
Lombok, @NoArgsConstructer, @AllArgsConstructer, @Setter @Getter, 생성자 ..란 (0) | 2022.12.14 |
---|---|
[String] Lombok이란 (0) | 2022.09.27 |
[Spring] JPA심화 (CRUD)_2, SpringBoot 서비스 구조 (1) | 2022.09.27 |
[Spring] JPA심화 (CRUD)_1 (0) | 2022.09.27 |
[Spring] JPA 상속(extends) (0) | 2022.09.26 |