본문 바로가기
✨ Club/이대솔브닥웹사이트 - 뀨엘 | Frontend(React,Next.js)

📊 이대백준랭작프로그램 [뀨업] - 프론트 : API 연결 2

by 정람지 2024. 6. 4.

으아아 데드라인 임박

그래도 되긴 된다

난 우리가 일을 좀 크게 벌려가지고..

결국 마지막에 터미널에서만 작동하는 코드를 내게 될 수도 있겠다고 생각했다

다행~

고생한 백엔소은

일단 작업한 거 풀 받기


📊 API 명세서 체크표

기능 HTTP URL Request Response 완성 여부
관리자가 오늘의 문제 post POST /main/auth   { (String) “TodayPS 생성 성공“ }  
메인페이지 보여주기(오늘의 문제 + 그룹 순위) GET /main   {
(INT) “ewha_ranking”: “이화여대 그룹 순위”
(INT) “rival_ranking”: “이화여대 전 순위 등수”
(String) “rival_group_name” : “이화여대 전 순위 그룹 이름”
(INT) “solved_num_gap” : “전 순위 그룹과 문제 수 차이”
(INT) “pid” : “오늘의 문제 번호”
(String) “dib_handle” : “찜한 사람 핸들”
(Boolean) “dib” : “찜하기 여부”
(String) “p_title” : “오늘의 문제 제목”
(INT) “p_tier” : “오늘의 문제 티어”
}
 
오늘의 문제 찜하기 PUT /main/todayps/dib/enable {
(INT)”pid”: “찜한 문제 번호”
(String) “dib_handle”: “찜한 사람 핸들”
}
{
(INT)”problem_num”: “찜한 문제 번호”
(String) “dib_handle”: “찜한 사람 핸들”
(Boolean) “dib” : “찜하기 여부”
(String) “problem_title” : “오늘의 문제 제목”
(INT) “problem_tier” : “오늘의 문제 티어”
}
 
학생의 교내 랭크 보여주기 GET /studentRank   {
(INT) “rank_ingroup” : “사용자의 교내 랭크”
(String) “handle” : “사용자 핸들”
(String) “userlink” : “사용자 솔브닥 링크”
(String) “tier” : “사용자 티어”
(INT) “solved_num” : “사용자 푼 문제 수”
}
⭕️
문제 알고리즘별로 보여주기 GET /problems/algo{algoid} {
(String) “tag” : “사용자가 선택한 알고리즘 태그” }
→ url에 파라미터 형태로 제공(프엔) ex) /problems/algo?tag=알고리즘명
{
(INT) “pid” : “문제 번호”
(String) “p_title” : “문제 제목”
(String) “link” : “문제 링크”
(INT) “solvednum” : “푼 사람 수”
(String) “tier” : “문제 티어”
}
 
문제 티어별로 보여주기 GET /problems/tier {
(String) “tier” : “사용자가 선택한 티어”
}
→ url에 파라미터 형태로 제공 ex) /problems/tier?tier=티어번호
{
(INT) “pid” : “문제 번호”
(String) “p_title” : “문제 제목”
(String) “link” : “문제 링크”
(INT) “solvednum” : “푼 사람 수”
(String) “algo” : “문제 알고리즘” → 보류?
}
 
같이 풀어요 게시판 게시글 문제번호별로 보여주기(검색) GET /pstogether/search/{pid} {
(int) “pid” : “사용자가 검색한 문제 번호”
}
→ url에 파라미터 형태로 제공 ex) /pstogether/search?pid=문제번호
{
(INT)”pid” : “문제 번호”
(String) “article_title” : “게시글 제목”
(String) “handle” : “게시자 핸들”
}
 
같이 풀어요 게시판 게시글 미리보기 GET /pstogether/previews   {
(INT)”pid” : “문제 번호”
(String) “article_title” : “게시글 제목”
(String) “handle” : “게시자 핸들”
}
 
같이 풀어요 게시글 상세 조회 GET /pstogether/search {
(INT) “articleId” : “게시글 아이디”
}
{
(INT)”pid” : “문제 번호”
(String) “handle” : “게시자 핸들”
(String) “github_link” : “깃허브 링크”
}
 
같이 풀어요 게시글 올리기 POST /pstogether {
(INT)”pid” : “문제 번호”
(String) “handle” : “게시자 핸들”
(String) “github_link” : “깃허브 링크”
(INT) “pw” : “비밀번호” }
{
”게시글 등록에 성공했습니다”
(INT)”pid” : “문제 번호”
(String) “handle” : “게시자 핸들”
(String) “github_link” : “깃허브 링크”
(INT) “pw” : “비밀번호”
}
 
같이 풀어요 게시글 삭제 DELETE /pstogether {
(INT) “articleId” : “게시글 아이디”
(INT) “pw” : “비밀번호” }
{ //비밀번호가 일치할 경우 ”게시글 삭제 성공” }
{ //비밀번호가 불일치할 경우 ”비밀번호 불일치” }
 

📊메인페이지 작업 - 오늘의 문제 + 그룹 순위

HTTP GET
URL http://localhost:8080/main
request -
response (INT) “ewha_ranking”: “이화여대 그룹 순위” 
(INT) “rival_ranking”: “이화여대 전 순위 등수” 
(String) “rival_group_name” : “이화여대 전 순위 그룹 이름” 
(INT) “solved_num_gap” : “전 순위 그룹과 문제 수 차이” 
(INT) “pid” : “오늘의 문제 번호” 
(String) “dib_handle” : “찜한 사람 핸들” 
(Boolean) “dib” : “찜하기 여부” 
(String) “p_title” : “오늘의 문제 제목” 
(INT) “p_tier” : “오늘의 문제 티어” 

 

{"isSuccess":true,
"code":"COMMON200",
"message":"성공입니다.",
"result":{
	"groupInfo":{
    	"ewha_ranking":121,
        "rival_ranking":120,
        "rival_group_name":"동의대학교",
        "solved_num_gap":31
     	},
     "todayPSList":[]
     }
 }

흠 지금 이렇게 반환되는데..

이름..이깨진다

투데이ps문제도안뜸..

 

앗싸리 사파리문제였던듯

크롬에서 잘나오고 프로그램에서도굿

사파리가 진짜 한글 변환 안해줌 크롬체고

 

투데이ps문제는 보니까 아예 테이블이 비어있었음

히언이가 SQL 수정해줌

물고기누가달았지귀엽게

싹지우고 초반데이터 재세팅

{"isSuccess":true,"code":"COMMON200","message":"성공입니다.","result":{"groupInfo":{"ewha_ranking":121,"rival_ranking":120,"rival_group_name":"동의대학교","solved_num_gap":31},"todayPSList":[{"pid":10834,"p_title":"벨트","p_tier":4,"dib":0,"dib_handle":null},{"pid":12813,"p_title":"이진수 연산","p_tier":4,"dib":0,"dib_handle":null},{"pid":17389,"p_title":"보너스 점수","p_tier":4,"dib":0,"dib_handle":null},{"pid":5656,"p_title":"비교 연산자","p_tier":4,"dib":0,"dib_handle":null},{"pid":8595,"p_title":"히든 넘버","p_tier":5,"dib":0,"dib_handle":null},{"pid":1308,"p_title":"D-Day","p_tier":6,"dib":0,"dib_handle":null},{"pid":10837,"p_title":"동전 게임","p_tier":8,"dib":0,"dib_handle":null},{"pid":8394,"p_title":"악수","p_tier":8,"dib":0,"dib_handle":null},{"pid":9536,"p_title":"여우는 어떻게 울지?","p_tier":8,"dib":0,"dib_handle":null},{"pid":1124,"p_title":"언더프라임","p_tier":10,"dib":0,"dib_handle":null},{"pid":15971,"p_title":"두 로봇","p_tier":12,"dib":0,"dib_handle":null},{"pid":2655,"p_title":"가장높은탑쌓기","p_tier":13,"dib":0,"dib_handle":null},{"pid":2904,"p_title":"수학은 너무 쉬워","p_tier":13,"dib":0,"dib_handle":null},{"pid":7573,"p_title":"고기잡이","p_tier":13,"dib":0,"dib_handle":null},{"pid":2613,"p_title":"숫자구슬","p_tier":14,"dib":0,"dib_handle":null}]}}

앗싸슨~

 

브론즈 1 이상 5 이하

실버 6 이상 10 이하

골드 11 이상 15 이하

 

+ CORS 문제 해결

이제 더미데이터가 아닌~ db에 저장된 실제데이터로 탈바꿈한 모습~

이지만 실시간이 아니라서 얘도 더미데이터긴하다

 

+ 나중에 실제배포할 때 여력이 되면 데이터 구조 바꿔달라고 하기..


📊메인페이지 작업 -  오늘의 문제 찜하기

HTTP PUT
URL http://localhost:8080/main/todayps/dib/enable
request (INT)”pid”: “찜한 문제 번호” 
(String) “dib_handle”: “찜한 사람 핸들” 
response (INT)”problem_num”: “찜한 문제 번호” 
(String) “dib_handle”: “찜한 사람 핸들” 
(Boolean) “dib” : “찜하기 여부” 
(String) “problem_title” : “오늘의 문제 제목” 
(INT) “problem_tier” : “오늘의 문제 티어” 

리퀘스트가있따

누가 찜하면 신호보내서 db에 저장해야함

그리고 찜 여부 가져와서 표시하는 것도 만들

 

ㅎ...

이거하기싫러짐

알고리즘별분류나하러가야지

 

 


아닛...선견지명 찢었다

트랜잭션 추가로 인한

찜하기 api 수정 이슈 발생

안하길잘했다