Solo project(ToDo-list)

Rina's·2023년 8월 1일

코드스테이츠

목록 보기
88/96

1. 스프링 부트로 서버 어플리케이션 작성
2. Tomcat으로 로컬 환경에 배포
3. Ngrok로 로컬에서 실행중인 서버를 외부에 오픈

서버 어플리케이션 작성

컨트롤러를 메인으로 작성해 가며 필요한 클래스를 하나씩 추가하였다
대략적인 순서는 dto - entity - mapper - service - repository
service를 구현중 exception 함께 구현
responseEntity 구현중 responseDto에 UriCreator를 사용해 URI를추가 구하였다
컨트롤러에는 CORS를 위해@CrossOrigin 를 사용하였다

시행착오

#1

기존의 TodoOrder는 리퀘스트 바디에 키값쌍으로 적혀 생성해야 했다
TodoOrder의 중복 방지를 위해 Todo 생성시 id처럼 자동으로 생성하도록 바꾸고

중간 순번의 Todo delete시 기존 Todo의 순서를 앞당겨 재 정렬하는 로직을 구현했다
post시 삭제된 Todo의 Order는 건너 뜀 현상이 있어 쿼리문@Query("SELECT MAX(t.order) FROM Todo t") +1 을 사용하여 실제하는 Todo 갯수 만큼 order가 생성되도록 했다

결과적으로 키 값인 Id와 달리 order값을 유동적으로 바뀌었다
그러나 기존에 생성되어있던 뷰의 js와 로직이 맞지 않아 재정렬은 로직은 폐기하였다

#2

build.gradle plugins에 id 'war'를 추가하여 ./gradlew build 명령어를 실행했으나 생성되지 않았다. build.gradle 파일 6번째 라인 }작성에 문제가 있다고 나왔다. 실제로 확인했지만 문제는 없었다. 버전? 환경변수? 경로? refresh? 설정? 등을 시도해 봤지만 제대로 되지않았다.
gradle 메뉴에 bootWar를 직접 실행하여 생성하였다.
다음날 거짓말 같이 정상작동 되었다
진작 재부팅을 할 걸 그랬나?

#3

톰켓 포트를 8090으로 경로에서 .\startup.bat 실행

//server.xml 파일을 수정
<Connector port="8090" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />

ngrok으로 터널링을 하여 https로 로컬환경을 노출

postman - post/patch/get/delete 를 요청

여기까지는 성공적이었으나 문제가 발생했다

Todo-backend 접속 시 기존 포스트맨으로 DB에 저장시킨 데이터가 출력되지 않다.
웹 서버에서 요청한 post는 DB에도 뷰에도 정상적으로 출력되었다
새로고침시 웹 서버에서 저장한 데이터도 출력되지 않는다
한마디로 Get요청이 실패하고 있었다


콘솔창에서 CORS로 인한 실패를 언급한다
@CrossOrigin사용만으론 부족한가? 라는 의문이 들어서 시큐리티를 사용해 cors허용과 함께 csrf를 비활성화 했다.

결과는 동일하게 실패했다. 다시한번 콘솔 창을 확인했다


todobackend가 내 ngrok서버 쪽에 요청하는게 아닌 내 ngrok서버todobackend에 요청하고 있었기에 배포하는 서버인 todobackend의 CORS 설정이 허용되어있어야 했다
해더를 추가해 요청해야 했지만 js를 수정할 수가 없다
할 수 있는 게 없다. 아고라에 질문 올리자

profile
갭린이 리나

0개의 댓글