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

    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に変更する