Share
Sign In
🖥️

개발 공부

서경태
TIL 웹개발 - RESTful API란?
RESTful API는 웹 서비스 개발에서 많이 사용하는 아키텍처 스타일 중 하나입니다. Django에서는 Django REST Framework(DRF)를 이용하여 쉽게 RESTful API를 구축할 수 있습니다. RESTful API와 Django에 대해 이해하는 데 도움이 될 만한 개념들을 아래에 설명할게요. 1. RESTful API란? REST(Representational State Transfer)는 자원을 네트워크 상에서 정의하고 자원에 대한 주소를 지정하는 아키텍처 스타일입니다. RESTful API는 이 REST 원칙을 따르는 API를 의미합니다. RESTful API의 주요 특징: 자원(리소스) 기반: REST는 모든 것을 자원으로 간주합니다. 예를 들어, 사용자, 게시물, 댓글 등이 자원으로 표현됩니다. HTTP 메서드 사용: CRUD 작업을 HTTP 메서드로 매핑합니다. GET: 자원의 조회 POST: 자원의 생성 PUT: 자원의 전체 수정 PATCH: 자원의 부분 수정 DELETE: 자원의 삭제 URL 설계: 자원은 고유한 URL로 접근됩니다. 예를 들어, GET /users/는 사용자 목록을, GET /users/1/은 특정 ID를 가진 사용자를 조회합니다. 무상태성: REST API는 무상태성을 유지해야 합니다. 즉, 서버는 각 요청을 독립적으로 처리하며, 이전 요청의 상태를 기억하지 않습니다. 표준화된 응답: 주로 JSON 형식으로 데이터를 주고받습니다. 2. Django에서 RESTful API 구현하기 Django REST Framework (DRF): Django에서 RESTful API를 쉽게 구축할 수 있도록 도와주는 라이브러리입니다. DRF는 직렬화, 인증, 권한 부여, 요청 처리 등의 기능을 제공합니다. 핵심 컴포넌트: Serializer: Django 모델 인스턴스를 JSON으로 직렬화하거나, JSON 데이터를 모델 인스턴스로 역직렬화하는 역할을 합니다. ViewSet: API의 논리를 처리하는 뷰를 그룹화한 것입니다. DRF에서는 일반적으로 ViewSet을 사용하여 CRUD 기능을 구현합니다. Router: ViewSet과 URL을 자동으로 연결해주는 역할을 합니다. 이를 통해 RESTful URL 패턴을 쉽게 설정할 수 있습니다. 예시 코드:
서경태
TIL 웹개발 - Django의 cleaned_data 활용
모델 폼을을 사용해 값을 받은 후 그 값을 다시 반환하거나 사용할때 cleaned_data를 사용할 수 있다. 팀프로젝트에서 해시태그 기능을 만들때 cleaned_data를 사용해 중계테이블의 값을 가져왔다. 해시태그와 아티클의 모델을 만들고 아티클에 해시태그를 M:N 필드로 가져와 article_hashtag 중계테이블을 만든 상태다. 모델폼은 만드는데 hashtags를 상속받지 않고 오버라이딩한다. 이유는, 상속받아 폼에 적용하면 hashtag테이블에 생성된 것 중 선택하는 양식으로 나오기 때문이다. 보통 해시태그는 선택이 아니라 직접 작성하기 때문에 위 코드처럼 오버라이딩해서 Textfield로 지정한다. views.py 에서는 모델폼을 사용해 값을 입력받는 로직이다. 하지만 form이 만들어지고 save를 했다고 해도 article_hashtags 중계 테이블에는 데이터가 저장되지 않는다. 이때 form의 cleaned_data 요소를 사용해 hashtag값을 반환해 따로 저장한다. form.is_valid()를 통해 유효성 검사를 통과화면 cleaned_data 딕셔너리가 생성되고 데이터가 cleaned_data 딕셔너리에 추가된다. 각 필드의 이름이 딕셔너리의 키(key)가 되고 입력한 내용이 값(value)로 저장된다. 만약 내가 아티클을 아래와 같이 작성하고, 타이틀: 아이폰 신상 공개 내용: 아이폰이 새로나왔어요! 해시태그: 아이폰 if form.is_valid()를 지나 해시태그 내용응 반환하고 다시 해시태그 테이블에서 그 값으로 중계테이블에 추가한다.
서경태
TIL 웹개발 - Git 활용
git init 현재 디렉토리를 깃 저장소로 초기화한다. .git 폴더가 생성됨으로써, 해당 디렉토리가 깃으로 관리되는 프로젝트가 된다. git status 현재 작업 디렉토리의 파일 상태를 확인할 수 있다. 어떤 파일이 수정되었는지, 어떤 파일이 스테이징되지 않았는지 등을 보여준다. git add <파일명> 특정 파일을 스테이징 영역에 추가한다. 예를 들어, git add example.txt를 입력하면 example.txt 파일이 커밋 대상에 포함된다. git add . 현재 디렉토리의 모든 변경 파일을 스테이징 영역에 추가한다. 자주 쓰이지만, 정확히 어떤 파일이 추가되는지 항상 확인하는 게 좋다. git commit -m "커밋 메시지" 스테이징된 파일들을 커밋한다. "커밋 메시지" 부분에 해당 커밋에 대한 설명을 적는다. 이 메시지는 프로젝트 히스토리를 이해하는 데 중요하다. git log 커밋 히스토리를 조회할 수 있다. 각 커밋의 해시, 작성자, 날짜, 메시지 등을 확인 가능하다. git branch 현재 브랜치를 확인하거나, 브랜치를 목록으로 보여준다. 새로운 브랜치를 생성하거나 삭제할 때는 -d 옵션 등을 추가로 사용한다. git branch <브랜치명> 새로운 브랜치를 생성한다. git branch feature를 입력하면 feature라는 이름의 새로운 브랜치가 만들어진다. git checkout <브랜치명> 다른 브랜치로 전환한다. 예를 들어, git checkout develop을 입력하면 develop 브랜치로 이동한다. git merge <브랜치명> 특정 브랜치를 현재 브랜치로 병합한다. 주로 새로운 기능을 개발한 브랜치를 main 브랜치에 병합할 때 사용한다. git remote add origin <원격 저장소 URL> 로컬 저장소와 원격 저장소를 연결한다. 보통 origin이라는 이름으로 많이 쓰인다. git push origin <브랜치명> 로컬 브랜치의 커밋을 원격 저장소에 푸시한다. 보통 main이나 develop 같은 브랜치를 푸시한다. git pull 원격 저장소에서 최신 변경 사항을 가져오고, 현재 브랜치에 병합한다. 푸시하기 전에 자주 사용하게 된다. git clone <원격 저장소 URL> 원격 저장소를 로컬에 복제한다. 원격에 있는 프로젝트를 그대로 내 컴퓨터로 가져올 수 있다.