내일배움캠프/내일배움캠프 TIL

내일배움캠프 TIL 21일차

sogummi 2023. 4. 11. 01:28

-

Django 팀 프로젝트 심화를 발제날
장고 심화 프로젝트 주제 : 뉴스 피드 프로젝트
우리 B-6조는 챌린지 참가 사이트를 만들기로 정하고 와이어프레임, ERD작성, API명세서까지 작성하고
저녁에 모델링작업을 했다. 

팀 프로젝트 ERD

API 명세표

기능 method url request response
회원가입 POST /api/signup 아이디,비밀번호,닉네임,이메일  
로그인 POST /api/signin 아이디,비밀번호  
썸네일 보여주기 GET /api/main   제목, 이미지
챌린지 상세보기 GET /api/challenge   작성자, 제목, 내용, 이미지, 작성날짜
챌린지 작성하기 POST /api/challenge 챌린지명, 이미지파일, 도전장르, 내용  
챌린지 수정하기 PUT /api/challenge 챌린지명, 이미지파일, 도전장르, 내용  
챌린지 삭제하기 DELETE /api/challenge   작성자, 내용, 이미지, 작성날짜
댓글 보여주기 GET /api/comment   작성자, 내용, 이미지, 작성날짜
댓글 작성하기 POST /api/comment 작성자, 내용, 이미지  
댓글 수정하기 PUT /api/comment 작성자, 내용, 이미지  
댓글 삭제하기 DELETE /api/comment    
마이페이지 작성한 챌린지 GET /api/mychallenge   제목, 이미지
마이페이지 참가중인 챌린지 GET /api/joinchallenge   제목, 이미지
마이페이지 완료한 챌린지 GET /api/finishichallenge   제목, 이미지
마이페이지 작성 댓글 GET /api/mycomment   작성자, 내용, 이미지, 작성날짜

 

Today I Learned


- API 명세서란?

API명세서를 작성하는 데 막상 작성하려니 감이 잘 안 잡혀서 알아보고 질문 드리면서 개념을 익히려고 노력했다.
API(Application Programming Interface) 명세서  :
API를 사용하는 개발자들이 API를 쉽게 이해하고 사용하도록 작성된 문서. 보통 백엔드 개발자과 프론트엔드 개발자가 각각 따로 작업을 하더라도 이러한 API가 있다면 원하는 결과물에 좀 더 수월하게 다다를 수 있다. 기술매니저님이 보여주신 Open API나 실제 프로젝트 API를 보니 실제적으로 어떻게 작성되는 지 파악할 수 있었고  Request에 파라미터를 넣었다. 다음부터는 적용시켜서 좀 더 상세하게 작성해볼 예정. 

- Django 루트경로찾기 -> 일반적으로 manage.py와 같은 파일에 위치한다. ls명령어를 입력하면 간단히 확인할 수 있다!
venv나 .env 파일 또한 루트경로와 같은 경로에 만들어야한다.  

- POST.get() 
이 메소드는 파이썬 딕셔너리에서 값을 가져오는 메소드 중 하나인데, 이러한 메소드는 딕셔너리에서 주어진 키(key)에 해당하는 값을 반환한다. 주어진 키가 딕셔너리에 없을 경우에는 기본 값을(default value)를 반환.
이 때, get() 메소드의 두 번째 인자로 기본 값을 지정할 수 있다. 

request_post = {
"price" : 1000, 
"name" : "테스트 상품",
}


request_post["price"]
request_post.get("price", "") #해당 키가 딕셔너리에 없을 경우 기본값으로 빈 문자열을 반환

request_post["price"] 과 request_post.get("price")는 모두 딕셔너리에서 "price" 키에 해당한느 값을 반환하는 것인데,
두 방법의 차이점은 바로 키가 존재 하지 않을 때에서 발생한다..!

(1) request_post["discount"] 와 같이 딕셔너리에서 존재하지 않는 키를 사용하면 "KeyError" 발생
(2) request_post.get("discount")와 같이 get()메소드를 사용하면, 해당 키가 존재 하지 않을 때는 None 값 반환하거나 디폴트 값 지정하면 그 값을 반환한다