GithubHelp home page GithubHelp logo

team8-server's Introduction

team8-server

API 주소

  • User

    • /user/register/

      [] POST : 회원가입 및 authtoken 발급

request : {
	"email" : "[email protected]",
	"name" : "testUser",
	"password" : "password",
	"student_id": "",
	"college": "",
	"department": "",
	"program": "",
	"academic_year": 1,
	"year_of_entrance": 1
}
response : {
    "email": "[email protected]",
	"name": "myname",
	"student_id": "",
	"college": "",
	"department": "",
	"program": "",
	"academic_year": 2,
	"year_of_entrance": 3,
	"token": "eyJ...",
	"refresh_token": "eyJ..."
}
  • /user/login/

    [] POST : email, password로 token을 요청

request : {
	"email" : "[email protected]",
	"password" : "password"
}
response : {
	"email": "[email protected]",
	"last_login": "2023-01-12 06:52:34.751485+00:00",
	"token": "eyJ...",
	"refresh_token": "eyJ..."
}
  • /user/current/

    [] GET : user의 마이페이지 정보를 get

request : {}
response : {
	"email": "[email protected]",
	"name": "a",
	"student_id": "",
	"college": "",
	"department": "",
	"program": "",
	"academic_year": 1,
	"year_of_entrance": 1
}
  • Lecture

    • /lectures/

      [] GET : 강의 list 요청. 가나다순, 10개 기준으로 pagination

request : {}
response : {
	"count": 7416,
	"next": "http://ec2-13-125-66-192.ap-northeast-2.compute.amazonaws.com:8000/lectures/?page=2",
	"previous": null,
	"results": [
		{
			"id": 6724,
			"name": "(한)국어교육논문작성의기초",
			"curriculum": "전선",
			"professor": "강효경",
			"department": "국어교육과",
			"number": "M1844.000400",
			"class_number": 1,
			"maximum": 50,
			"cart": 24,
			"current": 24,
			"time": "화(10:00~12:50)",
			"credit": 3,
			"rate": 2.35
		},
	{...}
    ]
}
  • Lecture 상세검색

    • /lectures?

      [] GET : Body grade, degree, college, department, curriculum, keyword, exception 가능. (모두 선택적 인자)

      • grade: 1, 2, 3, 4, 5
      • degree: 학사, 석사, 박사, 석박사통합, 학석사연계, 학석사통합, 복합학위
      • college: 공과대학, 자연과학대학, ... (수신 사이트 참조)
      • department: 컴퓨터공학부, ...
      • curriculum: 교양, 전필, 전선, ...
      • keyword: 주어진 문자열을 정확히 포함하도록 제한
      • exception: 주어진 문자열을 제외하도록 제한 (여러 개면 comma로 구분)
request : {
	"grade" : 2,
	"degree" : "학사",
	"college" : "공과대학",
	"department" : "컴퓨터공학부",
	"curriculum" : "전필",
	"keyword" : "컴퓨터",
	"exception" : "구조"
}
response : {
	"count": 1,
	"next": null,
	"previous": null,
	"results": [
		{
			"id": 2943,
			"name": "컴퓨터프로그래밍",
			"curriculum": "전필",
			"professor": "이영기",
			"department": "컴퓨터공학부",
			"number": "M1522.000600",
			"class_number": 1,
			"maximum": 150,
			"cart": 118,
			"current": 159,
			"time": "화(09:30~10:45)/수(19:00~20:50)/목(09:30~10:45)",
			"credit": 4,
			"rate": null,
			"parsed_time": [
				{
					"day": "TUE",
					"start_time": "09:30:00",
					"end_time": "10:45:00"
				},
				{
					"day": "WED",
					"start_time": "19:00:00",
					"end_time": "20:50:00"
				},
				{
					"day": "THU",
					"start_time": "09:30:00",
					"end_time": "10:45:00"
				}
			]
		}
	]
}
  • /lectures/int:id/

    [] GET : id가 주어진 값인 강의의 detail을 요청. (날짜는 ['MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT', 'SUN'] 형태)

request : {}
response : {
	"name": "사람 뇌의 구조와 기능",
	"curriculum": "교양",
	"professor": "정천기",
	"department": "의학과",
	"number": "47.019",
	"class_number": 2,
	"maximum": 200,
	"cart": 2,
	"current": 130,
	"time": "",
	"credit": 3,
	"rate": 4.375,
	"parsed_time": [
		{
			"day": "MON",
			"start_time": "18:00:00",
			"end_time": "20:50:00"
		},
		{
			"day": "TUE",
			"start_time": "13:00:00",
			"end_time": "14:50:00"
		}
	]
}
  • Review

    • /lectures/int:id/reviews/

      [] GET : id번 강의 리뷰 리스트를 요청. created_by는 리뷰 생성자가 본인이면 name, 아니면 null

request : {}
response : {
	"count": 18,
	"next": "http://ec2-13-125-66-192.ap-northeast-2.compute.amazonaws.com:8000/lectures/1/reviews/?page=2",
	"previous": null,
	"results": [
		{
			"id": 18,
			"title": "1",
			"content": "2",
			"created_by": "test",
			"created_at": "2023-01-04T15:59:10.533384Z",
			"is_updated": false,
			"updated_at": null,
			"rate": 5,
			"course": 1,
			"semester": "4"
	},
	{...}
    ]
}
[] POST : id번 강의에 새 리뷰를 생성
request : {
	"title" : "review title",
	"content" : "review content",
	"rate" : 3,
	"semester" : "2022-2"
}
response : {
	"id": 14,
	"title": "review title",
	"content": "review content",
	"created_by": "test2",
	"created_at": "2023-01-04T16:04:01.701656Z",
	"is_updated": false,
	"updated_at": null,
	"rate": 3,
	"course": 1,
	"semester": "2022-2"
}
  • /lectures/int:id/reviews/int:rid/

    [] GET : id번 강의에 달린 rid번 리뷰의 detail을 요청. rid번 리뷰 생성자/Admin 만 가능. created_by는 리뷰 생성자가 본인이면 name, 아니면 null

request : {}
response : {
	"id": 32,
	"title": "review title",
	"content": "review content",
	"created_by": "test2",
	"created_at": "2023-01-04T16:04:01.701656Z",
	"is_updated": false,
	"updated_at": null,
	"rate": 3,
	"course": 1,
	"semester": "2022-2"
}
[] PUT : rid번 리뷰를 수정. rid번 리뷰 생성자/Admin 만 가능
request : {
	"title" : "review put",
	"content" : "review content",
	"rate" : 3,
	"semester" : "2022-2"
}
response : {
	"id": 32,
	"title": "review put",
	"content": "review content",
	"created_by": "test2",
	"created_at": "2023-01-04T16:04:01.701656Z",
	"is_updated": true,
	"updated_at": "2023-01-04T16:07:48.215594Z",
	"rate": 3,
	"course": 1,
	"semester": "2022-2"
}
[] PATCH : id번 리뷰를 일부만 수정. id번 리뷰 생성자/Admin 만 가능
request : {
    "content" : "review patch",
}
response : {
	"id": 32,
	"title": "review put",
	"content": "review patch",
	"created_by": "test2",
	"created_at": "2023-01-04T16:04:01.701656Z",
	"is_updated": true,
	"updated_at": "2023-01-04T16:09:55.747977Z",
	"rate": 3,
	"course": 1,
	"semester": "2022-2"
}
[] DELETE : id번 리뷰를 제거. id번 리뷰 생성자/Admin 만 가능
request : {}
response : 204 No Content
  • [] Comment

    • /lectures/int:id/reviews/int:rid/comments/

      [] GET : comment의 리스트를 요청

request : {}
response : {
"count": 4,
"next": null,
"previous": null,
"results": [
	{
		"id": 7,
		"created_by": "test2",
		"content": "content",
		"review": 6,
		"created_at": "2023-01-04T10:33:58.767621Z",
		"is_updated": false
	},
   {...}
}
[] POST : 새 comment를 생성
request : {
	"content" : "content"
}
response : {
	"id": 9,
	"created_by": "test2",
	"content": "content",
	"review": 6,
	"created_at": "2023-01-04T16:14:51.212650Z",
	"is_updated": false
}
  • /lectures/int:id/reviews/int:rid/comments/int:cid/

    [] GET : cid번 comment의 detail을 요청

request : {}
response : {
	"id": 9,
	"created_by": "test2",
	"content": "content",
	"review": 6,
	"created_at": "2023-01-04T16:14:51.212650Z",
	"is_updated": true,
	"updated_at": "2023-01-04T16:19:37.686856Z"
}
[] PUT : cid번 comment를 수정. cid번 comment 생성자/Admin 만 가능
request : {
	"content" : "content put"
}
response : {
	"id": 9,
	"created_by": "test2",
	"content": "content put",
	"review": 6,
	"created_at": "2023-01-04T16:14:51.212650Z",
	"is_updated": true,
	"updated_at": "2023-01-04T16:20:54.072956Z"
}
[] PATCH : cid번 comment를 일부만 수정. pk번 comment 생성자/Admin 만 가능
request : {
	"content" : "content patch"
}
response : {
	"id": 9,
	"created_by": "test2",
	"content": "content patch",
	"review": 6,
	"created_at": "2023-01-04T16:14:51.212650Z",
	"is_updated": true,
	"updated_at": "2023-01-04T16:21:18.664607Z"
}
[] DELETE : id가 pk인 comment를 제거. pk번 comment 생성자/Admin 만 가능
request : {}
response : 204 No Content
  • Interest

    • /interest/

      [] GET : header의 토큰 정보를 바탕으로 해당 유저의 관심강좌 목록 조회

request : {}
response : {
	"count": 5,
	"next": null,
	"previous": null,
	"results": [
		{
			"id": 1827,
			"name": "수학연습 2",
			"curriculum": "교양",
			"professor": "서인석",
			"department": "수리과학부",
			"number": "L0442.000400",
			"class_number": 1,
			"maximum": 25,
			"cart": 30,
			"current": 27,
			"time": "금(10:00~11:50)",
			"credit": 1,
			"rate": null,
			"parsed_time": [
				{
					"day": "FRI",
					"start_time": "10:00:00",
					"end_time": "11:50:00"
				}
			]
		},
		{
			"id": 4750,
			"name": "라틴어 1",
			"curriculum": "교양",
			"professor": "양호영",
			"department": "협동과정  서양고전학전공",
			"number": "32.079",
			"class_number": 1,
			"maximum": 40,
			"cart": 87,
			"current": 46,
			"time": "월(15:30~16:45)/수(15:30~16:45)",
			"credit": 3,
			"rate": null,
			"parsed_time": [
				{
					"day": "MON",
					"start_time": "15:30:00",
					"end_time": "16:45:00"
				},
				{
					"day": "WED",
					"start_time": "15:30:00",
					"end_time": "16:45:00"
				}
			]
		},
		...
	]
}
[] POST : header의 토큰 정보를 바탕으로 해당 유저에게 관심강좌 추가
request : {
	"number": "32.079",
	"class_number": 1
}
response : {
	"id": 4750,
	"name": "라틴어 1",
	"curriculum": "교양",
	"professor": "양호영",
	"department": "협동과정  서양고전학전공",
	"number": "32.079",
	"class_number": 1,
	"maximum": 40,
	"cart": 87,
	"current": 46,
	"time": "월(15:30\~16:45)/수(15:30\~16:45)",
	"credit": 3,
	"rate": null
}
[] DELETE : header의 토큰 정보를 바탕으로 해당 유저에게서 관심강좌 삭제
request : {
	"number": "32.079",
	"class_number": 1
}
response : 204 No Content
  • Cart

    • /cart/

      [] GET : header의 토큰 정보를 바탕으로 해당 유저의 장바구니 목록 조회

request : {}
response : {
	"count": 5,
	"next": null,
	"previous": null,
	"results": [
		{
			"id": 1827,
			"name": "수학연습 2",
			"curriculum": "교양",
			"professor": "서인석",
			"department": "수리과학부",
			"number": "L0442.000400",
			"class_number": 1,
			"maximum": 25,
			"cart": 30,
			"current": 27,
			"time": "금(10:00~11:50)",
			"credit": 1,
			"rate": null,
			"parsed_time": [
				{
					"day": "FRI",
					"start_time": "10:00:00",
					"end_time": "11:50:00"
				}
			]
		},
		{
			"id": 4750,
			"name": "라틴어 1",
			"curriculum": "교양",
			"professor": "양호영",
			"department": "협동과정  서양고전학전공",
			"number": "32.079",
			"class_number": 1,
			"maximum": 40,
			"cart": 87,
			"current": 46,
			"time": "월(15:30~16:45)/수(15:30~16:45)",
			"credit": 3,
			"rate": null,
			"parsed_time": [
				{
					"day": "MON",
					"start_time": "15:30:00",
					"end_time": "16:45:00"
				},
				{
					"day": "WED",
					"start_time": "15:30:00",
					"end_time": "16:45:00"
				}
			]
		},
		...
	]
}
[] POST : header의 토큰 정보를 바탕으로 해당 유저에게 장바구니 강좌 추가
request : {
	"number": "32.079",
	"class_number": 1
}
response : {
	"id": 4750,
	"name": "라틴어 1",
	"curriculum": "교양",
	"professor": "양호영",
	"department": "협동과정  서양고전학전공",
	"number": "32.079",
	"class_number": 1,
	"maximum": 40,
	"cart": 87,
	"current": 46,
	"time": "월(15:30\~16:45)/수(15:30\~16:45)",
	"credit": 3,
	"rate": null
}
[] DELETE : header의 토큰 정보를 바탕으로 해당 유저에게서 장바구니 강좌 삭제
request : {
	"number": "32.079",
	"class_number": 1
}
response : 204 No Content
  • /cart/int:num

    [] Post : header의 토큰 정보를 바탕으로 해당 유저의 num번 시간표에 속한 강좌들을 모두 장바구니 강좌에 추가. (기존의 장바구니 강좌는 삭제됨)

request : {}
response : [
	{
		"id": 3,
		"name": "세르반테스와 스페인르네상스문학",
		"curriculum": "전선",
		"professor": "김경범",
		"degree": "석박사통합",
		"department": "서어서문학과",
		"number": "107.585",
		"class_number": 1,
		"maximum": 5,
		"interest": 0,
		"cart": 0,
		"current": 0,
		"time": "목(14:00~16:45)",
		"credit": 3,
		"rate": 3.5,
		"parsed_time": [
			{
				"day": "THU",
				"start_time": "14:00:00",
				"end_time": "16:45:00"
			}
		],
		"pending": false
	},
	...
]
  • Registered

    • /registered/

      [] GET : header의 토큰 정보를 바탕으로 해당 유저의 수강신청 목록 조회

request : {}
response : {
	"count": 5,
	"next": null,
	"previous": null,
	"results": [
		{
			"id": 1827,
			"name": "수학연습 2",
			"curriculum": "교양",
			"professor": "서인석",
			"department": "수리과학부",
			"number": "L0442.000400",
			"class_number": 1,
			"maximum": 25,
			"cart": 30,
			"current": 27,
			"time": "금(10:00~11:50)",
			"credit": 1,
			"rate": null,
			"parsed_time": [
				{
					"day": "FRI",
					"start_time": "10:00:00",
					"end_time": "11:50:00"
				}
			]
		},
		{
			"id": 4750,
			"name": "라틴어 1",
			"curriculum": "교양",
			"professor": "양호영",
			"department": "협동과정  서양고전학전공",
			"number": "32.079",
			"class_number": 1,
			"maximum": 40,
			"cart": 87,
			"current": 46,
			"time": "월(15:30~16:45)/수(15:30~16:45)",
			"credit": 3,
			"rate": null,
			"parsed_time": [
				{
					"day": "MON",
					"start_time": "15:30:00",
					"end_time": "16:45:00"
				},
				{
					"day": "WED",
					"start_time": "15:30:00",
					"end_time": "16:45:00"
				}
			]
		},
		...
	]
}
[] POST : header의 토큰 정보를 바탕으로 해당 유저에게 수강신청 강좌 추가
request : {
	"number": "32.079",
	"class_number": 1
}
response : {
	"id": 4750,
	"name": "라틴어 1",
	"curriculum": "교양",
	"professor": "양호영",
	"department": "협동과정  서양고전학전공",
	"number": "32.079",
	"class_number": 1,
	"maximum": 40,
	"cart": 87,
	"current": 46,
	"time": "월(15:30\~16:45)/수(15:30\~16:45)",
	"credit": 3,
	"rate": null
}
[] DELETE : header의 토큰 정보를 바탕으로 해당 유저에게서 수강신청 강좌 삭제
request : {
	"number": "32.079",
	"class_number": 1
}
response : 204 No Content
  • Timetable *현재 num으로 가능한 값은 3, 4, 5
    • /timetable/int:num/

      [] GET : header의 토큰 정보를 바탕으로 해당 유저의 num번 시간표의 강좌들을 검색.

request : {}
response : {
	"count": 5,
	"next": null,
	"previous": null,
	"results": [
		{
			"id": 1827,
			"name": "수학연습 2",
			"curriculum": "교양",
			"professor": "서인석",
			"department": "수리과학부",
			"number": "L0442.000400",
			"class_number": 1,
			"maximum": 25,
			"cart": 30,
			"current": 27,
			"time": "금(10:00~11:50)",
			"credit": 1,
			"rate": null,
			"parsed_time": [
				{
					"day": "FRI",
					"start_time": "10:00:00",
					"end_time": "11:50:00"
				}
			]
		},
		{
			"id": 4750,
			"name": "라틴어 1",
			"curriculum": "교양",
			"professor": "양호영",
			"department": "협동과정  서양고전학전공",
			"number": "32.079",
			"class_number": 1,
			"maximum": 40,
			"cart": 87,
			"current": 46,
			"time": "월(15:30~16:45)/수(15:30~16:45)",
			"credit": 3,
			"rate": null,
			"parsed_time": [
				{
					"day": "MON",
					"start_time": "15:30:00",
					"end_time": "16:45:00"
				},
				{
					"day": "WED",
					"start_time": "15:30:00",
					"end_time": "16:45:00"
				}
			]
		},
		...
	]
}
[] POST : header의 토큰 정보를 바탕으로 해당 유저의 num번 시간표에 강좌를 추가.
request : {
	"number": "32.079",
	"class_number": 1
}
response : {
	"id": 4750,
	"name": "라틴어 1",
	"curriculum": "교양",
	"professor": "양호영",
	"department": "협동과정  서양고전학전공",
	"number": "32.079",
	"class_number": 1,
	"maximum": 40,
	"cart": 87,
	"current": 46,
	"time": "월(15:30\~16:45)/수(15:30\~16:45)",
	"credit": 3,
	"rate": null
}
[] DELETE : header의 토큰 정보를 바탕으로 해당 유저의 num번 시간표에서 강좌를 삭제.
request : {
	"number": "32.079",
	"class_number": 1
}
response : 204 No Content
  • 서버 상태

    • GET /state/
    • response
      • period: 서버의 현재 기간
period 기간
0 수강신청 시작 전
1 장바구니 신청
2 장바구니 확정
3 수강신청
4 개강
request : {}
response : {
	"period": 1
}

team8-server's People

Contributors

serverrepairman avatar catnip033 avatar bean1009 avatar ganzidaeyong avatar

Watchers

Force, Mingyu avatar

Forkers

serverrepairman

team8-server's Issues

개선 사항

강좌를 선택하지 않고 수강신청/장바구니/관심강좌/시간표 추가를 했을 때 강의를 선택하라는 식의 안내 문자가 나오면 좋을 것 같습니다. 또한, 회원가입 시 학번과 학년이 가능한 조합인지 검증하는 로직이 있으면 좋겠습니다. 마지막으로 시크릿 탭으로 웹을 열었을 때 가입 실패 오류가 발생하는데, 이는 어떤 요인인지 잘 모르겠습니다. + 보안 문자가 초기화되지 않는 현상이 보였는데, 버그인지 구현이 안 된 것인지는 모르겠지만 초기화되는 것이 좋을 것 같습니다.

보안문자 입력 후 텍스트 초기화되지 않음

보안문자를 입력 후, 자동으로 보안문자를 입력했던 것이 사라지지 않습니다. 그리고 소셜 로그인/회원가입을 분리한 것도 부자연스러운 것 같습니다. 소셜 로그인은 하나의 버튼으로 통일해서 사용하는 것으로 알고 있습니다.

[BUG] 소셜 로그인 재시도 실패

SNU 메일이 아닌 다른 메일로 로그인 시도 후, 다시 로그인을 시도하면 소셜 로그인 창이 떴다 바로 꺼지고, SNU 이메일로 로그인해주세요 팝업이 계속 뜹니다. 회원가입도 마찬가지입니다.

2023-02-06.23-19-53.mp4

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.