Spring/spring_old

08. MVC Controller 생성

slow333 2023. 1. 26. 17:16

@PostMapping과 @PutMapping 은 @RequestBody를 통해 내용을 전달

@GetMapping은 @PathVariable 또는 @RequestParam을 통해 내용을 전달 (url에 내용을 포함해서 전달)

controller class에 @RequestMapping("/공통 이름")을 하면 안에서는 그 다음 부터 적으면됨

Rest(json)을 이용한 annotation은 @RestController

ClubController

@RestController
//@RequiredArgsConstructor
@RequestMapping("/clubs")
public class ClubController {

  private final ClubService clubService;

  @Autowired
  public ClubController(ClubService clubService) {
    this.clubService = clubService;
  }

  @PostMapping // body에 내용이 담겨서 옮
  public String register(@RequestBody ClubCdo clubCdo) {
    return clubService.registerClub(clubCdo);
  }

  @GetMapping("/{clubId}")
  public Optional<Club> findClub(@PathVariable String clubId) {
    return clubService.findClubById(clubId);
  }

  @GetMapping("/all")
  public List<Club> findAll() {
    return clubService.findAll();
  }

  @GetMapping
  public List<Club> findByName(@RequestParam String name) {
    return clubService.findClubsByName(name);
  }
  @GetMapping("/containingName")
  public List<Club> findByNameAll(@RequestParam String name) {
    return clubService.findClubsByNameContaining(name);
  }

  @PutMapping("/{clubId}") // body에 내용이 담겨서 옮
  public void modify(@PathVariable String clubId,@RequestBody NameAndValueList nameAndValueList) {
    clubService.modifyClub(clubId, nameAndValueList);
  }

  @DeleteMapping("/{clubId}")
  public void delete(@PathVariable String clubId) {
    clubService.removeClub(clubId);
  }
}

MemberController

@RestController
@RequestMapping("/members")
public class MemberController {

  private MemberService memberService;

  @Autowired
  public MemberController(MemberService memberService) {
    this.memberService = memberService;
  }

  @PostMapping
  public String register(@RequestBody MemberCdo memberCdo) {
    return memberService.registerMember(memberCdo);
  }

  @GetMapping("/{memberId}")
  public Optional<Member> findMember(@PathVariable String memberId) {
    return memberService.findMemberById(memberId);
  }

  @GetMapping("/all")
  public List<Member> findAll() {
    return memberService.findAll();
  }

  @GetMapping
  public List<Member> findByName(@RequestParam String name) {
    return memberService.findMemberByName(name);
  }

  @PutMapping("/{memberId}") // body에 내용이 담겨서 옮
  public void modify(@PathVariable String memberId,@RequestBody NameAndValueList nameAndValueList) {
    memberService.modifyMember(memberId, nameAndValueList);
  }

  @DeleteMapping("/{memberId}")
  public void delete(@PathVariable String memberId) {
    memberService.removeMember(memberId);
  }
}

json 시험 데이터 생성(entity 객체에)

public static Member sample() {

    Member member = new Member("myvms@vms.com", "저녁은 뭐지?", "010-3321-1001","fishburn","2004.02.22");
//    member.setBirthDay("2003.01.07");
//    member.getAddresses().add(Address.sampleHomeAddress());
//    member.getAddresses().add(Address.sampleOfficeAddress());
    return member;
  }
  public static void main(String[] args) {
    //
    System.out.println(new Gson().toJson(sample()));

    NameAndValueList memberList = new NameAndValueList();
    memberList.addNameValue("name", "changed member name");
    memberList.addNameValue("phoneNumber", "010-3333-7896");
    System.out.println(new Gson().toJson(memberList));
  }
public static Club sampleClub(){
  return new Club("spring club", "처음으로 생성하는 클럽 입니다.");
}
public static void main(String[] args) {

  System.out.println(sampleClub());

  NameAndValueList list = new NameAndValueList();
  list.addNameValue("name", "changed 클럽 name ~~~");
  list.addNameValue("intro", "변경된 클럽 이름 입니다. 되나");
  System.out.println(new Gson().toJson(list));
}