package com.example.jerseyexercise.resources; import jakarta.ws.rs.*; import jakarta.ws.rs.core.MediaType; import org.springframework.stereotype.Component; import java.util.ArrayList; @Path("srana") @Component//Jerseyの場合必須 public class SRana { String name = "noname"; ArrayList<String> tweetList = new ArrayList<>(); // ↑の<>中にJerseyはいっているが省略できる //Jerseyの場合getメソッドと定義する必要がある @GET//myaccountのGET public String getMyAccount() { return "Hello World!!";//localhost:8080/myaccount(URL)のwebページにHello World!!が表示される } @GET//myaccount/nameのGET @Path("/name")//親リソースの続きの子リソース public String getName() { return name; } //置き換え、入れ替えをするときPUTを使う @PUT @Path("/name")//←URLのname ↓パラメータのname(Keyのnameと一致) public void setName(@FormParam("name") String newName) { //nameをPostmanでPUTすることで変更できる。引数はnewName。 name = newName;//nonameが上書きされる ArrayList<String> tweetList = new ArrayList<>(); } @POST @Path("/tweets") @Consumes(MediaType.APPLICATION_FORM_URLENCODED) public void tweet(@FormParam("tweet")String tweet) { //tweets = tweet ←これだと最新のツイートしか見れない(過去のが残らない) tweetList.add(tweet); //ArrayList のメソッド: // add(x) --- リストの末尾にxを追加 // get(idx) --- リストのidx番目の要素を取得 // size() --- リストに入っている要素の数を取得 // remove(idx) --- リストのidx番目の要素を削除 } @GET @Path("/tweets") @Produces(MediaType.APPLICATION_JSON) public ArrayList<String> getTweets() { return tweetList;//このtweetListはArrayList } @GET @Path("/tweets/{no}") @Produces(MediaType.APPLICATION_JSON) public String getTweet(@PathParam("no") int n) { String t = tweetList.get(n); return t; } }