🍃웹개발 Spring

[Spring] API - GET

개발자는신이야 2022. 9. 27. 17:38

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 등을 전송할 수 있습니다.

 

@RequiredArgsConstructor:

이 어노테이션은 초기화 되지않은 필드나, @NunNull 이 붙은 필드에 대해 생성자를 생성해 준다.

주로 의존선 주입 편의성을 위해 사용된다고 한다.

 

private final CourseRepository courseRepository:

이 클래스를 사용할때 무조건 CourseRepository가 필요하다.

 

@GetMapping("api/courses"):

아래에 있는 메소드는 Get이다. Get을 불러오는 url을 api/courses로 약속한다.