API(Application Programming Interface)は、外部サービスやデータをプログラムから利用するためのインターフェースです。例えば、天気情報や為替レートを取得するAPIをJavaで呼び出すことで、データをアプリケーションに組み込むことができます。
この記事では、JavaでAPIを呼び出す基本的な方法を初心者向けにわかりやすく解説します。
1. APIとは何か?
APIは、他のアプリケーションやサービスと通信するための仕組みです。API呼び出しは通常、以下の形式で行います:
- HTTPメソッド(GET, POST, PUT, DELETE など)
- URL(APIエンドポイント)
- リクエストヘッダーやボディ(必要に応じてデータを送信)
2. JavaでAPIを呼び出す準備
JavaでAPIを呼び出すには、以下の準備が必要です。
(1) HTTPクライアントを選ぶ
HttpURLConnection
(標準ライブラリ)- Apache HttpClient(高度な機能を持つ外部ライブラリ)
- OkHttp(軽量で使いやすい)
今回は初心者向けに、標準の HttpURLConnection
を使った方法を中心に解説します。
3. APIを呼び出す基本的な流れ
(1) GETリクエストを送信してデータを取得
以下は、HttpURLConnection
を使ったシンプルなGETリクエストの例です。
1 |
import java.io.BufferedReader;<br>import java.io.InputStreamReader;<br>import java.net.HttpURLConnection;<br>import java.net.URL;<br><br>public class ApiCallExample {<br> public static void main(String[] args) {<br> String apiUrl = "https://api.example.com/data"; // APIのURL<br><br> try {<br> // URLオブジェクトを作成<br> URL url = new URL(apiUrl);<br> HttpURLConnection conn = (HttpURLConnection) url.openConnection();<br><br> // HTTPメソッドを設定<br> conn.setRequestMethod("GET");<br><br> // レスポンスコードを確認<br> int responseCode = conn.getResponseCode();<br> if (responseCode == HttpURLConnection.HTTP_OK) {<br> // レスポンスを読み取る<br> BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));<br> StringBuilder response = new StringBuilder();<br> String line;<br> while ((line = reader.readLine()) != null) {<br> response.append(line);<br> }<br> reader.close();<br><br> // レスポンスの内容を表示<br> System.out.println("APIレスポンス: " + response.toString());<br> } else {<br> System.out.println("エラー: HTTPコード " + responseCode);<br> }<br><br> } catch (Exception e) {<br> e.printStackTrace();<br> }<br> }<br>}<br> |
(2) POSTリクエストを送信してデータを送る
POSTリクエストでは、リクエストボディにデータを送信します。
例: POSTリクエストの送信
1 |
import java.io.OutputStream;<br>import java.net.HttpURLConnection;<br>import java.net.URL;<br><br>public class ApiPostExample {<br> public static void main(String[] args) {<br> String apiUrl = "https://api.example.com/post";<br> String jsonInput = "{ \"name\": \"山田太郎\", \"email\": \"taro@example.com\" }";<br><br> try {<br> // URLオブジェクトを作成<br> URL url = new URL(apiUrl);<br> HttpURLConnection conn = (HttpURLConnection) url.openConnection();<br><br> // HTTPメソッドとヘッダーを設定<br> conn.setRequestMethod("POST");<br> conn.setRequestProperty("Content-Type", "application/json");<br> conn.setDoOutput(true);<br><br> // リクエストボディを送信<br> try (OutputStream os = conn.getOutputStream()) {<br> byte[] input = jsonInput.getBytes("utf-8");<br> os.write(input, 0, input.length);<br> }<br><br> // レスポンスコードを確認<br> int responseCode = conn.getResponseCode();<br> System.out.println("HTTPコード: " + responseCode);<br><br> } catch (Exception e) {<br> e.printStackTrace();<br> }<br> }<br>}<br> |
4. より簡単にAPIを扱うためのライブラリ
標準ライブラリだけでなく、以下のようなライブラリを使うと、API呼び出しがさらに簡単になります。
(1) OkHttp
OkHttpは軽量で使いやすいHTTPクライアントライブラリです。
Maven依存関係
1 |
<dependency><br> <groupId>com.squareup.okhttp3</groupId><br> <artifactId>okhttp</artifactId><br> <version>4.9.3</version><br></dependency><br> |
例: GETリクエスト
1 |
import okhttp3.OkHttpClient;<br>import okhttp3.Request;<br>import okhttp3.Response;<br><br>public class OkHttpExample {<br> public static void main(String[] args) {<br> OkHttpClient client = new OkHttpClient();<br> String apiUrl = "https://api.example.com/data";<br><br> Request request = new Request.Builder()<br> .url(apiUrl)<br> .build();<br><br> try (Response response = client.newCall(request).execute()) {<br> if (response.isSuccessful()) {<br> System.out.println("APIレスポンス: " + response.body().string());<br> } else {<br> System.out.println("エラー: HTTPコード " + response.code());<br> }<br> } catch (Exception e) {<br> e.printStackTrace();<br> }<br> }<br>}<br> |
5. APIレスポンスの解析
APIから返されるデータは多くの場合、JSON形式です。JacksonやGsonを使ってデータを解析します。
例: JacksonでJSONを解析
1 |
import com.fasterxml.jackson.databind.ObjectMapper;<br><br>String jsonResponse = "{ \"name\": \"山田太郎\", \"email\": \"taro@example.com\" }";<br>ObjectMapper mapper = new ObjectMapper();<br>Person person = mapper.readValue(jsonResponse, Person.class);<br><br>System.out.println("名前: " + person.getName());<br> |
6. 学習を深めるためのおすすめリソース
- **「絶対にJavaプログラマーになりたい人へ」**でJavaの基礎を固めましょう。
- **「サイゼントアカデミー」**では、実践的なスキルと転職サポートを受けられます。
まとめ
JavaでAPIを呼び出す基本をマスターすれば、外部サービスと連携したアプリケーションを開発できるようになります。まずはGETやPOSTリクエストから始め、慣れてきたらライブラリやJSON解析を活用してみましょう。
次のステップとして、セキュリティやトークン認証(OAuthなど)についても学ぶと、さらに実用的なAPI呼び出しができるようになります!
コメント