Newer
Older
JerseyExercise / src / main / java / com / example / jerseyexercise / resources / SRana.java
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;
    }

}