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;
}
}