[꼼꼼한 개발자] 꼼코더
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. 상태저장 후 성공까지 하니 역시 재밌다.
'개발일지 > 피파 온라인 4 프로젝트' 카테고리의 다른 글
Comments