우리 팀은 MSA 방식으로 웹 어플리케이션을 만들기 때문에 api 통신이 중요하다. api 통신을 하기 위해서 client 단에서 호출 가능한 library가 무엇이 있는지 찾아보았다. 크게 두 라이브러리를 사용하는데, HttpURLConnection
과 RestTemplate
이다.
void sendRequest(String request)
{
// i.e.: request = "http://example.com/index.php?param1=a¶m2=b¶m3=c";
URL url = new URL(request);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput(true);
connection.setInstanceFollowRedirects(false);
connection.setRequestMethod("GET");
connection.setRequestProperty("Content-Type", "text/plain");
connection.setRequestProperty("charset", "utf-8");
connection.connect();
}
요즘 들어 선호하는 형태는 postForObject
. 어떤 형태로든 받아 올 수 있어서 개발 생산성이 조금 더 높은 것 같다. uriVariables
형태도 있어서 https://naver.com/{id}/posts/{index}
이런 형식으로 url을 작성하면 더 간편하게 구현할 수 있다.
물론 #1의 HttpURLConnection
보다 속도가 느림. 가벼운 건 아님. 조금 더 안정성이 높다고 하는데 그건 잘 모르겠고 개발할 때 조금 더 간편하고 길게 쓰지 않아도 되어서 선호하는 편.
예전부터 RestTemplate
을 사용하는 걸 선호했던 터라 HttpURLConnection
의 필요성을 느끼지 못했다. 그런데 모듈형식으로 생각한다면 HttpURLConnection
을 사용하는 게 더 관리하기 용이하다고 생각했다. 호출하는 형식이 거기서 거기 + 메서드에 HttpMethod 형식을 어떻게 받아올 건지만 세팅해주면 되니까… 일단 api 만들고 다시 리팩토링 해야지… 😥 resttemplate을 더 효율적으로 사용하는 방법은 나중에 찾아봐야겠다.