画面
JSON形式のデータ pic.twitter.com/ZQXfgn0PY7
— いまむら たくま (@Imamuuu5) May 15, 2023
java
API2.java
package app28;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/api2")
public class API2 extends HttpServlet {
// GET 処理(GET メソッドで HTTP リクエストが送られてくるたびに実行される)
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// レスポンスの設定(毎回この設定)
response.setHeader("Cache-Control", "no-cache"); // キャッシュを利用しない
response.setHeader("Pragma", "no-cache"); // キャッシュを利用しない(下位互換性用)
response.setDateHeader("Expires", 0); // キャッシュ有効期限0
response.setCharacterEncoding("UTF-8"); // レスポンス文字コード UTF-8 設定
response.setContentType("application/json"); // レスポンスタイプ application/json 設定
// レスポンスを {"name": "太郎", "age": 20} で返却
// レスポンスボディ作成処理
PrintWriter out = response.getWriter(); // レスポンス書き込み用 PrintWriter 取得
out.println("{\"name\": \"太郎\", \"age\": 20}"); // レスポンス書き込み {"name": "太郎", "age": 20}
out.flush(); // フラッシュ処理(強制送信のようなもの)
out.close(); // PrintWriterのクローズ(これ以降書き込めない)
}
}
パスの設定である WebServlet アノテーションが
以下の設定に変わっている。
@WebServlet("/api2")
これにより
http://localhost:8080/App28/api2
というアドレスにアクセスした際、実行されるプログラムがAPI2になるよう設定される。
RESTful API では JSON(JavaScript Object Notation) 形式のデータを送信する。
今回は2種類のデータをJSON形式にまとめ送信している。
{"name": "太郎", "age": 20}
1つ目が name という項目名で 「太郎」という文字列。
2つ目が age という項目名で「20」という数値を設定した。
複数の項目を設定したい場合、「,(カンマ)」で区切ることで設定できる。
また、文字列のデータは「"(ダブルクオーテーション)」で囲む必要があるが、int や boolean 等の値は囲まなくて良い。