-
Django-rest-framework(DRF)를 활용한 효율적인 웹 API 만들기카테고리 없음 2021. 11. 23. 13:47
<API 서버란?>
- 앱/웹 서비스를 만드는 개발자들이 이용하는 데이터 위주의 서비스. 시간이 지나도 호환성을 유지해야 한다.
- Server가 Client에 요청을 받으면 HTML 형식으로 보내주게 된다.
<REST(Representational State Transfer)>
- http의 url과 http method를 사용해서 API 가독성을 높인 구조화된 시스템 아키텍쳐. 즉, 아키텟쳐(framework)의 종류 중 하나이다.
- 하나의 URL로 최소 4가지의 HTTP method를 전송할 수 있다.
- 프로토콜에 독립적 => 일반적인 REST 구현에서 HTTP를 사용
- RESTful API의 몇 가지 디자인 원칙
1. 리소스(django model)를 중심으로 디자인
2. 클라이언트에서 엑세스할 수 있는 모든 종류의 개체/서비스가 리소스에 포함
3. 리소스마다 해당 리소스를 고유하게 식별하는 식별자
4. 요청/응답 포맷으로 흔히 JSON을 사용
5. 균일한(uniform) 인터페이스를 적용
<DRF를 사용하는 이유>
- 웹 브라우저 API는 범용성이 크다. 개발을 쉽게 만들어준다.
- serializer 기능을 제공
<HTTP 메서드를 기준으로 기본 작업 정의>
같은 리소스더라도, 요청에 따라 의미가 달라질 수 있다.
PUT은 전체를 대체(update)하는 메서드이고, PATCH는 부분을 대체(update)하는 메서드이다.
<Django-rest-framework의 주요 기능들>
Serializer/ ModelSerializer를 통한 데이터 유효성 검증 및 데이터 직렬화
각종 Parser를 통한 데이터 처리
APIView / Generic / ViewSet / ModelViewSet를 통한 요청 처리
각종 Renderer를 통한 다양한 응답 포맷 지원
인증/ 권한 체계 - 써드파티를 통해 JWT 지원
Throttling (최대 호출 횟수 제한)
<CRUD : API의 기본적인 기능>
Create / Read / Update / Delete
<JSON>
JSON은 JavaScript Object Notation의 줄임말로서 데이터의 송수신을 자바스크립트 객체로서 수행할 수 있게끔 하는 가벼운 문자열 데이터 표현식.
django에서 JSON
JSON은 하나의 자바스크립트 객체처럼 보인다. 하지만 정말 자바스크립트 객체인 것은 아니다. 자바스크립트 객체를 통해 데이터를 송수신하다 보면 자바스크립트를 인지하지 못하는 경우가 발생할 수 있다. 따라서 JSON 문자열 타입으로 전해주는 것이다. 이처럼 자바스크립트 객체를 JSON으로 바꾸는 것을 직렬화(Serializer)라고 한다!
<json으로 바꾸는 방법?>
Data = { }
DataJson = json.dumps(Data)
이것만을 통해 바꿀 수 있다.
JSON에서 python dictionary로 다시 돌리는 방법은?
DataReturn = json.loads(DataJson)