대학교 수강제한인원 조회 사이트 제작기

0

프로젝트

목록 보기
4/14

Frontend & Backend :

Spring

기존에 Synology Web Station API를 사용하여 Web Station에 동영상을 저장해놓고 해당 영상을 시청할 수 있도록 Spring으로 제작해놓았던 사이트에 Controller을 따로 추가하여 하나의 웹 앱에서 URL 매핑에 따라 아예 다른 기능을 수행할 수 있도록 추가하였다. 관련 게시글은 추후 올릴 예정이다. 도커에 따로 프로젝트를 올리기 싫어서 하나의 웹 앱에서 동작하도록...하였다.

WelcomeController:


웰컴컨트롤러는 말그대로 첫 시작 페이지를 보여준다. 기본적으로 "도메인주소/cuk"에 매핑되어 있으며, cuk.jsp를 사용자에게 띄워주는 역할을 한다.

TrinityController :


해당 컨트롤러는 "도메인주소/search"에 매핑된다. 해당 URL로 요청이 들어왔을 경우에 로직을 수행한다. cuk.jsp에서 정보를 입력하고 해당 주소로 요청을 보내면 req로부터 파라미터를 받아서 JSON 객체로 만든다. 이후 실제로 대학교 수강신청 페이지에서 정보를 넘겨주는 API에게 Post로 다시 요청을 보내고 결과를 전달받는다. 아래의 코드는 입력받은 정보를 토대로 JSON 객체를 만드는 과정이다.

당연하게도 이 이전에는 형식적, 논리적 검증을 하는 코드가 존재한다.

이후 API로부터 전달받은 정보를 담아서 cuk.jsp로 뿌려준다.

cuk.jsp에서는 정보가 존재할 경우에만 해당 정보를 보여줄 수 있도록 jstl을 이용해서 작성하였다.

수강제한인원 조회 API

FastAPI

기존에 이미 작성된 파이썬 코드가 존재한다. (https://github.com/dokdo2013/haenu-api) 원래는 학생들이 편하게 사용할 수 있도록 사이트가 존재하였으나, 개인정보 문제로 업데이트 및 유지 보수가 중단되었다. 나도 마찬가지로 개인적으로 사용하기 위해서만 제작한다. 심지어 대학교를 졸업하여,, 이제 사용할 필요가 없어졌다.

해당 파이썬 코드를 먼저 ~.py파일에 담고 하나의 메소드로 정의한다. 이후에 FastAPI제작의 기본 틀을 따라 제작하여 해당 메소드의 값을 리턴해주는 형태로 제작하였다.

요청받을 객체의 형태를 이미 정의해놓는다.

마찬가지로 "도메인주소/search"로 요청을 받고 앞서 Spring에서 생성한 JSON 객체를 전달받는다. 이후 수강제한인원 정보를 조회하여 리턴해준다.

어떻게 둘다 /search에 매핑되어있는지 궁금할 수도 있는데,
Docker에서 Fastapi는 trinity.도메인주소/search로 Nas로 들어오면 역프록시를 통해 매핑된다.
반면에 Docker에서 Spring프로젝트는 share.도메인주소/search로 들어올 경우에 역프록시를 통해 해당 컨테이너로 매핑된다.

소감

일단 두 프레임워크 역시 잘 다루지는 못하지만, FastAPI 관련해서는 생각이 든게 정말 간단한것 같다. Node.js 또는 SpringBoot로 API를 간략하게 제작해본적이 있는데 시작이 이렇게 간단할 수가 없다. FastAPI 코드를 작성하는데는 10분도 안걸린것 같다.(한가지의 기능만 가지고 있기도 하다..)

실제 사이트 주소

이걸 공개로 돌려놓을지 말지를 정말 많이 고민했는데, 어떠한 수익 없이 포폴용으로 공개한다. 사이트의 레이아웃은 마찬가지로 https://cuk.haenu.com 를 참고하여 생성만 해놓은 상태이다.

제작 사이트 : https://share.shbox.kr/cuk

원리

https://github.com/dokdo2013/haenu-api 여기서 공개하고 있는 코드를 살펴보면 크롤링할때 사용하는 BeautifulSoap을 통해서 우리 대학교 사이트에 로그인을 하고 부여받은 나에대한 정보를 저장해놓고 수강제한인원을 조회할 때 해당 정보를 이용하여 사이트에 다시 요청을 보낸다. 이후에 리턴된 정보 중에 필요한 정보만 파싱하여 다시 리턴하는 형태로 보여진다.

profile
최악의 환경에서 최선을 다하기

0개의 댓글