Rest란
REST(Representational State Transfer)의 약자로 자원을 이름으로 구분하여 해당 자원의 상태를 주고받는 모든 것
- HTTP URI ( Uniform Resource Identifier )를 통해 자원(Resource)을 명시
- HTTP Method(Post, Get, Put, Delete, Patch 등)를 해당 URI에 대한 CRUD 작업을 적용하는 것을 의미
CRUD
- Create : 데이터 생성 ( POST )
- Read : 데이터 조회 ( GET )
- Update : 데이터 수정 ( PUT, PATCH )
- Delete : 데이터 삭제 ( DELETE )
Rest 구성
- 자원 ( Resource ) - URI
- 행위 ( Method ) - HTTP Method
- 표현 ( Representations ) - HTTP Message Pay Load
Rest 특징
- Uniform ( 유니폼 인터페이스 )
- Stateless ( 무상태성 )
- Cacheable ( 캐시 가능 )
- Self - descriptiveness ( 자체 표현 구조 )
- Client - Server 구조
- 계층형 구조
Rest API 란
Rest의 원리를 따르는 API를 의미한다.
RestAPI를 올바르게 설계하기 위해서는 지켜야하는 몇가지 규칙이 있다
Rest API 설계 예
1. URI 는 동사보다 명사를 사용하고 대문자보다는 소문자를 사용해야 함
좋은 예 : https://leejaem95.tistory.com/django
나쁜 예 : https://leejaem95.tistory.com/Django
2. 마지막에 / (슬래시) 를 사용하지 않음
3. 언더바 ( _ ) 대신 하이픈 ( - ) 을 사용함
4. 파일 확장자는 URI에 포함되지 않는다.
5. 행위를 포함하지 않는다.
미니 프로젝트에 Rest Framework 적용
Rest Framework 설치
pip install djangorestframework
Installed_apps 에 rest_framework 추가
serializer.py 생성
model : 모델 설정
fields : 필드 설정
Serializer란 queryset과 모델 인스턴스와 같은 복잡한 데이터를 json, xml 등 유형으로 쉽게 변환이 가능하다
받은 데이터의 유효성을 검사한 다음, 복잡한 타입으로 형 변환할 수 있도록 serializeation을 제공한다.
from rest_framework import viewsets
from .serializers import MovieSerializer
from .models import User
views.py 에 UserViewSet 추가작성 하고 위의 패키지들을 import 해준다
Restframework는 사람들이 자주 사용하는 공통적인 view 로직을 그룹화 한 viewset을 제공한다.
viewset을 사용하게 되면 CRUD로직을 직접 짜지 않아도 기능을 사용할 수 있다.
Restframework는 url을 자동으로 맵핑해주는 router를 제공한다.
앞에서 생성한 viewset을 router에 연결하면 자동으로 url을 맵핑해줘서
사용자가 직접 url을 맵핑하지 않아도된다.
서버 실행
앞서 설정해줬던 url인 */api로 접속하면 위와같은 화면이 출력된다.
*/api/users 에 접속하면 유저 데이터가 json 형태로 출력된다
그리고 users 뒤에 아이디 값인 1 을입력해서 가보면
users에 id값이 1인 admin 계정정보가 출력되는것을 볼 수 있다.
아직 완벽하게 이해는 못했지만 이렇게 구현이 가능하구나라는 것을 알게 되었다.
계속 사용해보면서 내꺼로 만들어야지..
참조
'django' 카테고리의 다른 글
Django 게시글 작성 구현하기 (0) | 2022.10.25 |
---|---|
Django 게시판 list 구현하기 (0) | 2022.10.24 |
Django 회원가입 구현하기 (0) | 2022.10.18 |
Django Logout 구현해보기 (0) | 2022.10.18 |
Django Login 구현해보기 (0) | 2022.10.18 |