package com.example.jerseyexercise.resources; import jakarta.ws.rs.*; import jakarta.ws.rs.core.MediaType; import org.springframework.stereotype.Component; import java.util.HashMap; import java.util.Set; @Path("/amika") // @Component //Rest作るときは、@component書く public class AmikaRest { private HashMap<String, String> accounts = new HashMap<>(); { //キーとヴァリュー accounts.put("id", "name"); //キーとヴァリュー //accountsは全員のIDと名前の対応表(mapはnameはかぶっていい) } @GET //idだけ取ってくる集合 @Produces(MediaType.APPLICATION_JSON) //JSONファイルで返す→@Produdes public Set<String> getAccounts() { return accounts.keySet(); //keyをどさっととってこれる } @POST @Consumes(MediaType.APPLICATION_FORM_URLENCODED) //consumeはAPPLICATION_FORM_URLENCODEDだけ //formdataのこと public void signup(@FormParam("id") String id, @FormParam("name") String name){ //idを名前新規作成 accounts.put(id,name); } @Path("/{id}")//その子リソースをメソッドが扱う @Produces(MediaType.TEXT_PLAIN) public String getName(@PathParam("id") String id){ //@PathParamでid受け取る return accounts.get(id); } @Path("/{id}")//その子リソースをメソッドが扱う @Consumes(MediaType.APPLICATION_FORM_URLENCODED) //consumeはこの形式だけ public void setName(@PathParam("id") String id, @FormParam("name") String name) { if (accounts.get(id) == null) return; accounts.put(id, name); } } // get: /amika -> 全アカウントのID一覧を返す // post:(id, name): /amika 新規アカウント登録 // get: /amika/{id} -> idで指定したアカウントの名前を返す //put(name): /amika/{id} -> id で指定したアカウントの名前をnameに変更する