Java-외부 API 연동

개미는뚠뚠·2023년 5월 20일
1

java

목록 보기
8/11
post-thumbnail

회사에서 항상 DB에 들어있는 정보를 바탕으로 개발을 진행하였다. 근데 그 DB 데이터들은 나보다 경험이 많으신 개발자분들이 외부 api를 연동하여 DB에 데이터를 쌓아주셨다는 사실을 알게 되었다. 사실 리액트를 하면서 외부 api를 통한 개발 등을 진행하였으나, 현재 spring을 사용하면서는 한번도 내가 직접 api를 호출하거나 그 데이터를 축적한 경험이 없던 것이다...
그래서 이번 블로그에는 외부 api 호출하고 연동하는 방식을 간단히 정리해보려고 한다. 그리고 퇴근시간에 직접 코드를 짜면서 다시 한번 복습을 진행할 예정이다.

API란?

먼저 api 호출에 대해 알아보기 위해 사전적 정의를 정리하려고 한다.
API (Application Programming Interface)는 응용 프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 말한다.

WEB API란?

WEB API는 웹 서버 또는 웹 브라우저를 위한 애플리케이션 프로그래밍 인터페이스이다.
HTTP 서비스 형태로 다양한 클라이언트에서 접근이 가능하도록 설계가 되어있다. Web 환경을 통해 제공되는 데이터 CRUD 인터페이스를 제공한다.


Java를 이용한 외부 API 연동

    @ApiOperation(value = "외부 Api 인터페이스 작성", notes = "사용자 등록 및 업데이트시 적용")
    @PostMapping("/api/setting/agent/manage/userLogoutImpl")
    public Object UserLogoutInterface(@JsonParam webJSON jsonParams) throws Exception
    {
        OkHttpClient client = new OkHttpClient().newBuilder().build();
		
        // 전달하고자 하는 데이터를 JSON 형식으로 FormDataPart에 삽입.
        RequestBody body = new MultipartBody.Builder().setType(MultipartBody.FORM)
        .addFormDataPart("Param", "{\"Name\":\"KIMDAEHO\",\"Age\":\"28\",\"Job\":\"developer\"}")
        .build();
        // url안의 주소는 호출하고자 하는 API의 주소 및 포트번호
        Request request = new Request.Builder().url("http://호출URL/API/").post(body).build();
        try {
        	// 외부API에 전달하는 값
            Response response = client.newCall(request).execute();
            try {
            	// 외부 API로 부터 반환받는 값
                JSONObject json = new JSONObject(response.body().string());
                log.debug("json :: "+ json);
            }
            catch(JSONException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        catch(IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        log.debug("jsonParams ::+ jsonParams);
        return jsonParams;
    }

해당 코드에 간단히 설명하자면 다음과 같다.

  1. Controller를 호출했을때 OkHttpClient 를 Builder() 패턴으로 생성.
  2. RequestBody를 통해 외부 API에 보내고자 하는 값을 FORM 데이터의 형식으로 JSON으로 감싸서 전송.
  3. request에는 해당 API의 주소와 RequestBody에 담겨있던 데이터들이 함께 들어가 있는 것을 확인 할 수 있다.
  4. respone 객체를 통해 OkHttpClient의 newcall을 이용하여 request를 담어 post방식으로 전송.
  5. 외부 API에서는 이 Contorller에서 보낸 데이터를 통해 새로운 값을 Return을 해주고, 해당하는 Return 값은 JSONObject를 통해 확인 할 수 있다.

ajax(View)를 이용한 외부 API 연동

var form = new FormData();
form.append("Param", "{\"Name\":\"KIMDAEHO\",\"age\":\"28\",\"Job\":\"developer\"}");

var settings = {
  "url": "http://호출URL:Port/API/",
  "method": "POST",
  "timeout": 0,
  "processData": false,
  "mimeType": "multipart/form-data",
  "contentType": false,
  "data": form
};

$.ajax(settings).done(function (response) {
  console.log(response);
});

view에서 api 호출은 정말 간단하다.

Ajax로 전송에 필요한 데이터 형식을 맞춰 주고 외부 API 주소로 전송을 할 수 있다.
전송이 성공적으로 완료가 되면 외부 API에서 Return해주는 값을 response로 확인 할 수 있다.

지금은 ajax를 사용하였지만 한창 리액트를 사용하면서는 fetch 또는 Axios를 사용했었다!


이번 주는 조금 바빴던 관계로 관련글이나 이론적인 부분을 많이 참고하였다. 해당 부분은 일정 조절을 잘 못했던 내 잘못이니 다음 주 출근하여 업무를 파바바바박 끝내고, 퇴근 시간에 남아서 해당 부분을 다시 복습하자👍

0개의 댓글