본문 바로가기
Spring

[Spring] API

by jelliclesu 2024. 7. 18.
  • API
    : 클라이언트 - 서버 간의 약속
    클라이언트가 정한대로 서버에게 요청(Request)을 보내면, 서버가 요구사항을 처리하여 응답(Response)을 반환

 

  • REST
    : 주소에 명사, 요청 박식에 동사(CRUD)를 사용함으로써 의도를 명확히 드러냄을 의미
    ➡️ 즉, 생성(POST)/조회(GET)/수정(PUT)/삭제(DELETE) 요청
    ✔️예시
    ⚠️ 주소에 들어가는 명사들은 복수형을 사용하고, 동사는 가급적 사용하지 않음
    • GET /courses -> 강의 전체 목록 조회 요청
    • GET /courses/1 -> ID가 1번인 녀석 조회 요청
    • POST /coures -> 강의 생성 요청
    • PUT /courses/3 -> ID가 3번인 녀석 수정 요청
    • DELETE /courses/2 -> ID가 2번인 녀석 삭제 요청

 

  • API 생성
    1. src > main > java > com.sparta.week02 에 controller 패키지 생성
    2. CourseController.java 파일 생성
      @RequiredArgsConstructor
      @RestController
      public class CourseController {
          
          private final CourseRepository courseRepository;
          
         	// API 작성
      }
      • GET
        @GetMapping("/api/courses")
        public List<Course> getCourses() {
            return courseRepository.findAll();
      • POST
      • @PostMapping("/api/courses")
        public Course createCourse(@RequestBody CourseRequestDto requestDto) {
            Course course = new Course(requestDto);
        
            return courseRepository.save(course);
        }

        • Course.java 에 생성자 추가
          public Course(CourseRequestDto requestDto) {
              this.title = requestDto.getTitle();
              this.tutor = requestDto.getTutor();
          }
      • PUT
        @PutMapping("/api/courses/{id}")
        public Long updateCourse(@PathVariable Long id, @RequestBody CourseRequestDto requestDto) {
            return courseService.update(id, requestDto);
        }
         
      • DELETE
        @DeleteMapping("/api/courses/{id}")
        public Long deleteCourse(@PathVariable Long id) {
            courseRepository.deleteById(id);
            return id;
        }

 

  • ARC(Advanced REST Client)
    : 현업에서 API를 생성하고 테스트 및 기능 확인을 위해 사용하는 툴의 한 종류
    Method 에서 방식 선택, Request URL에 확인하고자 하는 API 주소 작성
    ‼️POST, PUT 방식
    • Header name: Content-Type
    • Parameter value: application/json
    • BODY 탭에 JSON 형식으로 정보 입력