[꼼꼼한 개발자] 꼼코더

46. [개발일지] - [피파 온라인 4 프로젝트] - 11. 상태 저장 방법 적용 (로그 찍는 습관, 세션 적용) 본문

개발일지/피파 온라인 4 프로젝트

46. [개발일지] - [피파 온라인 4 프로젝트] - 11. 상태 저장 방법 적용 (로그 찍는 습관, 세션 적용)

꼼코더 2023. 5. 22. 17:14
반응형

🧑🏻‍💻 accessId 넘겨주고 받아서 저장하기

컨트롤러에서 'HttpServletRequest request'를 매개변수 객체로 선언하여 서비스에 전달

    @GetMapping("/{nickname}")
    public ModelAndView getUserByNickname(@PathVariable("nickname") String nickname, HttpServletRequest request, Model model) {
        FifaUser nickNameUser = fifaUserServiceImpl.findUserByNickname(nickname); // 닉네임으로 유저 정보 가져오기
        String accessId = nickNameUser.getAccessId(); // 가져온 유저정보에서 accessId(고유 식별자)만 추출

        fifaUserServiceImpl.saveAccessIdToSession(request, accessId); // 세션에 accessId 저장

        // '유저 고유 식별자'로 얻을 수 있는 정보들을 모두 얻어온다.
        FifaUser userInfoByAccessId = fifaUserServiceImpl.findUserByAccessId();

 

서비스(클래스)에서 받아서 저장한다.

    public void saveAccessIdToSession(HttpServletRequest request, String accessId) {
        HttpSession session = request.getSession();
        session.setAttribute("accessId", accessId);
    }

 


 

🧑🏻‍💻 세션으로 저장된 accessId 사용하기

 

컨트롤러에서 메서드를 호출하기 전 먼저 서비스 메소드를 수정해야 한다(인터페이스, 구현 객체)

기존에 있던 매개변수에 String accessId를 지워준다 (빈 매개변수)

// ----인터페이스---

FifaUser findUserByAccessId(); // 유저 고유 식별자로 유저 정보 조회

List<UserTearHistoryDTO> getUserTearHistoryList(); // 유저 경기별 역대 최고 등급 조회


// ----구현 객체----

	// 유저 정보 조회 메소드 findUserByAccessId
    // accessId으로 넥슨 open API에서 유저 정보를 가져온 후, FifaUser 객체로 변환 후 반환
 	public FifaUser findUserByAccessId() {
        HttpSession session = request.getSession(); // accessId 저장되어있는 session 객체생성
        String accessId = (String) session.getAttribute("accessId"); // accessId 가져오기
        // 넥슨에 요청할 url (open API URL + 작성한 유저 이름을 통해 얻어온 accessId)
        String url = "https://api.nexon.co.kr/fifaonline4/v1.0/users/" + accessId;

        log.info("-------accessId---------");
        log.info(accessId);

  	// 유저 경기별 역대 최고 등급 조회
    public List<UserTearHistoryDTO> getUserTearHistoryList() {
        HttpSession session = request.getSession(); // accessId 저장되어있는 session 객체생성
        String accessId = (String) session.getAttribute("accessId"); // accessId 가져오기

        log.info("-------accessId---------");
        log.info(accessId);

 

서비스에서 수정된 메소드를 호출하여 사용

    // '유저 고유 식별자'로 얻을 수 있는 정보들을 모두 얻어온다.
    FifaUser userInfoByAccessId = fifaUserServiceImpl.findUserByAccessId();
	// 유저의 경기별 티어 정보 가져오기. > 배열 데이터(공식, 감독)
	List<UserTearHistoryDTO> userTearHistoryDTOList = fifaUserServiceImpl.getUserTearHistoryList();

 


📺 결과

화면에도 잘 나오고 있다.

메서드를 호출할 때마다 로그에서도 accessId가 잘 나오고 있다!!

 


😁 느낀점

1. 로그를 찍는 습관이 생기니 개발 질이 높아졌다!

2. 상태저장 후 성공까지 하니 역시 재밌다.

 

 

 

 

 

 

Comments