Skip to content

🎯 Request와 Response를 처리하는 규칙

KyungHyeon edited this page Apr 24, 2023 · 8 revisions

Request는 Presentation 계층 / Data와 Response는 Application 계층에 만든다.

  • Response를 Presenatation 계층에서 만들기 위해 도메인 모델을 반환한다면, Presentation 계층에서 도메인 모델의 메소드를 호출하거나 상태를 변경할 수 있다.
  • 도메인 모델은 Presentation 에서 불필요한 정보와 속성이 노출되어 보안 문제가 발생할 수 있다.
  • 도메인 모델과의 결합이 강하게 연결되어 버리기 때문에 Response를 Application 계층에서 만들어야 한다.

1. 모든 Request 객체는 Data 객체와 toData() 함수를 만든다.

  • WebAdapter는 Request의 인자를 알 필요가 없어진다.

2. Data Class의 인자 해제를 자주 사용하지 않는다.

  • 인자 해제는 변경에 대처가 힘들고, 자체적으로 인자 해제로 인한 실수 방지가 어렵다.
  • data class의 인자가 정말 자주 사용될 경우에만 사용하기로 하자

3. Response를 생성할 때 let을 잘 사용하자

  • 동작의 순서를 나타낼 때 let 사용
return data
    .map(Data::Id)
    .let { 
        Response(
            data1 = it,
            data2 = data2
        )
    }
  • Response의 인자가 한 개일 때 메서드참조 이용
return data.let { Response(it.data1) }

                ↓

return data.let(::Response)