간단한 API를 직접 만들어보자(1)

2024. 5. 15. 15:14TIL

🎯 오늘 진행한 내용

 

작성해야하는 API의 구현 목표: CRUD

기본적인 생성,조회,수정,삭제를 할 수 있는 API를 만드는것이 목표!

자신의 할일카드를 생성,조회,수정,삭제할 수 있는 API를 만들어보자

 

기본적인 세팅

API가 잘 작동하는지 확인하기 위한 Swagger를 적용한다

 

 

우리는 단순히 card의 crud를 구현하는 api를 작성하기 때문에 간단한 패키지 구조를 만들어본다

 

card 패키지 안의 dto안에 card의 dto를 작성

package org.example.spartatodolist.domain.card.dto

data class CardResponse(
    val id:Long,
    val title: String,
    val description: String?,
    val date: String
)

 

삭제에 관한 dto는 작성이 필요치 않으니 생성,수정에 대한 dto를 작성한다

 

간단한 dto작성이 끝났으니 이 dto를 인자로 받는 controller를 작성해보자

 CardController라는 class를 생성한뒤

package org.example.spartatodolist.domain.card.controller

import org.example.spartatodolist.domain.card.dto.CardResponse
import org.example.spartatodolist.domain.card.dto.CreateCardResponse
import org.example.spartatodolist.domain.card.dto.UpdateCardResponse
import org.springframework.http.ResponseEntity
import org.springframework.web.bind.annotation.*

@RequestMapping("/cards")
@RestController
class CardController {

    @GetMapping()
    fun getCardList(){
        TODO()
    }

    @GetMapping("/{cardId}")
    fun getCard(@PathVariable cardId: Long){
        TODO()
    }

    @PostMapping()
    fun createCard(@RequestBody createCardResponse: CreateCardResponse): ResponseEntity<CardResponse>{
        TODO()
    }

    @PutMapping("/{cardId}")
    fun updateCard(@PathVariable cardId: Long, @RequestBody updateCardResponse: UpdateCardResponse){
        TODO()
    }

    @DeleteMapping("/{cardId}")
    fun deleteCard(@PathVariable cardId: Long){
        TODO()
    }
}

cards 하위에 들어오는 요청을 담당하기 위해 @RequestMapping 어노테이션을 작성하고

StatusCode를 명시적으로 지정해주기 위해서 CardResponse를 ResponseEntity안에 감싸주는 형태로 작성

 

기본적인 API 구조  StatusCode도 잘 나오는것을 확인할 수 있다.

 

 

 

🤔 더 추가해야할 내용?

오늘은 간단하게 card의 dto와 controller의 전체적인 뼈대를 작성하였고

구체적인 함수 구현과 service layer,repository layer간의 작성과 연결에 대해 추가해야한다

📓 오늘의 한줄

"Average is a failing formula."

- Grant Cardone -