본문 바로가기

Programing/Framework

[Spring] ClientHttpResponse 인터페이스 계층 구조

ClientHttpRequestInterceptor 인터페이스를 통해 로깅을 남기고 있었는데 비표준 Http Status 코드로 인해 개선을 하게 되면서 정리를 하였다.

ClientHttpResponse 인터페이스

close()는 며AutoCloseable에 정의한 인터페이스를 재정의한(override) 것이다.

나머지는 이름(상태코드, 숫자형태의 Raw 상태코드, 상태 문자열)의 정보를 획득한다.

AbstractClientHttpResponse 추상 클래스

getStatusCode() 를 구현해놓았고 코드는 아래와 같다.

public abstract class AbstractClientHttpResponse implements ClientHttpResponse {
	@Override
	public HttpStatus getStatusCode() throws IOException {
		return HttpStatus.valueOf(getRawStatusCode());
	}
}

클라이언트별 구현체 클래스들

  Java Apache OkHttp3 Netty4
동기 SimpleClientHttpResponse HttpComponentsClientHttpResponse OkHttp3ClientHttpResponse N/A
비동기 N/A HttpComponentsAsyncClientHttpResponse N/A Netty4ClientHttpResponse