Open API는 다른 소프트웨어 애플리케이션에서 사용할 수 있는 인터페이스를 제공하는 소프트웨어 API입니다.
오픈 API는 웹 애플리케이션, 모바일 애플리케이션 등에서 많이 사용됩니다. 개발자가 애플리케이션에서 제공하는 서비스에 대한 다른 사용자 또는 시스템이 접근할 수 있도록 하기 위해 사용됩니다. Open API는 다양한 형태로 제공됩니다. RESTful API, SOAP API 등이 있습니다. Open API를 사용하면 다른 애플리케이션에서 데이터를 가져오거나 기능을 수행할 수 있습니다. 예를 들어, 공공기관에서 제공하는 지하철 시간표, 날씨 정보 등의 데이터를 Open API로 제공하여 다른 애플리케이션에서 이용할 수 있도록 합니다. 이러한 Open API는 애플리케이션 개발자들이 쉽게 활용할 수 있도록 문서화되어 제공됩니다. Open API를 사용함으로써, 애플리케이션 개발자들은 데이터를 수집하거나 새로운 서비스를 개발할 때 기존의 서비스나 데이터를 활용할 수 있습니다. 또한, 기업이나 기관에서 Open API를 제공함으로써, 다양한 애플리케이션에서 사용되는 데이터나 기능을 공유할 수 있습니다.
GET 메서드는 리소스를 가져오는 데 사용됩니다. 서버에 GET 요청을 보내면 서버는 요청된 리소스를 반환합니다. 주로 검색이나 조회에 사용됩니다.
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
OkHttpClient client = new OkHttpClient();
String url = "http://openapi.seoul.go.kr:8088/{인증키}/json/TbPublicWifiInfo/1/5/{서울시도로명주소}/{건물번호}";
url = url.replace("{인증키}", "인증키를 여기에 입력하세요");
url = url.replace("{서울시도로명주소}", "서울시 도로명 주소를 여기에 입력하세요");
url = url.replace("{건물번호}", "건물 번호를 여기에 입력하세요");
Request request = new Request.Builder()
.url(url)
.build();
try (Response response = client.newCall(request).execute()) {
if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);
System.out.println(response.body().string());
}
}
}
POST 메서드는 서버에 데이터를 제출하는 데 사용됩니다. 주로 데이터 생성이나 변경에 사용됩니다.
import okhttp3.*;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
OkHttpClient client = new OkHttpClient();
String url = "https://jsonplaceholder.typicode.com/posts";
MediaType mediaType = MediaType.parse("application/json");
String json = "{\n" +
" \"title\": \"foo\",\n" +
" \"body\": \"bar\",\n" +
" \"userId\": 1\n" +
"}";
RequestBody body = RequestBody.create(json, mediaType);
Request request = new Request.Builder()
.url(url)
.post(body)
.build();
try (Response response = client.newCall(request).execute()) {
if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);
System.out.println(response.body().string());
}
}
}
DELETE 메서드는 서버에서 리소스를 삭제하기 위해 사용됩니다. 즉, 존재하는 리소스를 삭제하기 위해 사용됩니다.
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
OkHttpClient client = new OkHttpClient();
String url = "http://openapi.seoul.go.kr:8088/{인증키}/json/TbPublicWifiInfo/{서울시도로명주소}/{건물번호}";
url = url.replace("{인증키}", "인증키를 여기에 입력하세요");
url = url.replace("{서울시도로명주소}", "서울시 도로명 주소를 여기에 입력하세요");
url = url.replace("{건물번호}", "건물 번호를 여기에 입력하세요");
Request request = new Request.Builder()
.url(url)
.delete()
.build();
try (Response response = client.newCall(request).execute()) {
if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);
System.out.println(response.body().string());
}
}
}
OPTIONS 메서드는 서버에서 지원되는 메서드를 확인하기 위해 사용됩니다. HEAD 메서드는 GET 메서드와 동일하지만, 서버에서는 응답 본문을 반환하지 않습니다. 대신에, 서버는 리소스 메타데이터만 반환합니다. PATCH 메서드는 PUT 메서드와 유사하지만, 리소스의 일부분만 업데이트합니다. PUT 메서드는 서버의 리소스를 업데이트하기 위해 사용됩니다. 즉, 이미 존재하는 리소스를 업데이트할 때 사용됩니다.
위 예제는 GET 메소드를 제외하고는 실제로 돌려보지 않아서 동작하는 지는 알 수 없지만, openApi에 기본적인 구조를 이해하는 데에는 도움이 될 듯하다. 아래 코드는 실제로 서버에 http get을 날려 json으로 데이터를 받을 수 있다( key 값은 따로 받아야함)
package TbPublicWifiInfo;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import okhttp3.ResponseBody;
public class WifiGetInfoOkhttp {
static String key = "";
static String dataType = "/json";
static String serviceName = "/TbPublicWifiInfo";
public boolean getUserInfo() {
try {
String url = "http://openapi.seoul.go.kr:8088" + key + dataType + serviceName + "/1/1/서대문구/서소문로/";
// String url = "http://openapi.seoul.go.kr:8088/sample/xml/TbPublicWifiInfo/1/5/\t\t\n";
OkHttpClient client = new OkHttpClient();
Request.Builder builder = new Request.Builder().url(url).get();
Request request = builder.build();
Response response = client.newCall(request).execute();
if (response.isSuccessful()) {
ResponseBody body = response.body();
if (body != null) {
System.out.println("Response:" + body.string());
}
}
else
System.err.println("Error Occurred");
return true;
} catch(Exception e) {
e.printStackTrace();
}
return false;
}
public static void main(String[] args) {
WifiGetInfoOkhttp wifi = new WifiGetInfoOkhttp();
wifi.getUserInfo();
}
}
https://data.seoul.go.kr/dataList/OA-20883/S/1/datasetView.do
다음 단계로는 Response 객체로 받은 json 데이터를 파싱하는 방법에 대해서 알아봐야겠다.
출처 : https://square.github.io/okhttp/
'Backend' 카테고리의 다른 글
SOLID : 객체 지향 설계 5원칙 (0) | 2023.05.12 |
---|---|
openApi 활용(4) : servlet redirection, GeoLocation, 버튼 구현 (0) | 2023.04.17 |
openApi 활용(3) DB 연동하기 (0) | 2023.04.16 |
openApi 활용(2) : gson (0) | 2023.04.11 |