REST API 주소구조

1 minute read

영어 잘하는 패턴

/boards
  GET - search list
  POST - create one
  /{id}
    GET - one show
    PUT - one update (idempotent)
    PATCH - one partial update
    DELETE - one remove
/board
  /search
    GET
  /batch
    GET
    POST
    PUT
    DELETE
  /by
    /code/{code}
    /uuid/{uuid}

DSL로 만들면

route {
  route("/boards") {
    get { }
    post(boardsPostHandler)
    route("/{id}") {
      get { }
      put { }
      patch { }
      delete { }
    }
  }
  route("/board") {
    get("/search") { }
    route("/batch") {
      get { }
      post { }
      put { }
      delete { }
    }
    route("/by") {
      get("/code/{code}") { }
      get("/uuid/{uuid}") { }
    }
  }
}

영어 쌩까는 패턴

/board
  /list
    GET - search list
  /one
    POST - one create
    /{id}
      GET - one show
      PUT - one update (idempodent)
      DELETE - one remove
  /batch
    POST - create many
    /{ids}
      GET - read many
      PUT - update many
      DELETE - remove many
  /by
    /code/{code}
    /uuid/{uuid}

~

게시판같은거나 만드는게 아닐서 REST패턴 적용이 힘든 경우가 많은데
표준구조 안 나오면 고민하지 말고 그냥 대충 하는게 좋다
퍼블릭으로 공개하는 API가 아닌 경우에는 이런건 별로 중요하지 않은 것 같다.
금방 수정도 가능하고

ex) 입금관련기능

  • /deposit/apply POST

  • /deposit/cancel POST

  • /deposit/confirm POST

  • /deposit/status POST

RPC처럼 사용되서 DTO로 파라미터를 전달.. 그냥 다 POST로 구현.

~~

주소나 Http method에 집착하지말자
한 서비스에서 컨벤션만 일정하게 유지되면 된다.