본문 바로가기
django

Rest API 와 프로젝트에 적용까지

by 리잼 2022. 10. 19.
반응형

 

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 특징

  1. Uniform ( 유니폼 인터페이스 )
  2. Stateless ( 무상태성 )
  3. Cacheable ( 캐시 가능 )
  4. Self - descriptiveness ( 자체 표현 구조 )
  5. Client - Server 구조
  6. 계층형 구조

Rest API 란

Rest의 원리를 따르는 API를 의미한다.

RestAPI를 올바르게 설계하기 위해서는 지켜야하는 몇가지 규칙이 있다

Rest API 설계 예

1. URI 는 동사보다 명사를 사용하고 대문자보다는 소문자를 사용해야 함

2. 마지막에 / (슬래시) 를 사용하지 않음

3. 언더바 ( _ ) 대신 하이픈 ( - ) 을 사용함

4. 파일 확장자는 URI에 포함되지 않는다.

5. 행위를 포함하지 않는다.


미니 프로젝트에 Rest Framework 적용

Rest Framework 설치

pip install djangorestframework

settings.py

Installed_apps 에 rest_framework 추가

serializer.py

serializer.py 생성

model : 모델 설정

fields : 필드 설정

Serializer란 queryset과 모델 인스턴스와 같은 복잡한 데이터를 json, xml 등 유형으로 쉽게 변환이 가능하다

받은 데이터의 유효성을 검사한 다음, 복잡한 타입으로 형 변환할 수 있도록 serializeation을 제공한다.

 

views.py

from rest_framework import viewsets
from .serializers import MovieSerializer
from .models import User

views.py 에 UserViewSet 추가작성 하고 위의 패키지들을 import 해준다

Restframework는 사람들이 자주 사용하는 공통적인 view 로직을 그룹화 한 viewset을 제공한다.

viewset을 사용하게 되면 CRUD로직을 직접 짜지 않아도 기능을 사용할 수 있다.

urls.py

Restframework는 url을 자동으로 맵핑해주는 router를 제공한다.

앞에서 생성한 viewset을 router에 연결하면 자동으로 url을 맵핑해줘서

사용자가 직접 url을 맵핑하지 않아도된다.

 

서버 실행

앞서 설정해줬던 url인 */api로 접속하면 위와같은 화면이 출력된다.

api/users/

*/api/users 에 접속하면 유저 데이터가 json 형태로 출력된다

api/users/1

그리고 users 뒤에 아이디 값인 1 을입력해서 가보면

users에 id값이 1인 admin 계정정보가 출력되는것을 볼 수 있다.

 

아직 완벽하게 이해는 못했지만 이렇게 구현이 가능하구나라는 것을 알게 되었다.

계속 사용해보면서 내꺼로 만들어야지..


참조

https://jamanbbo.tistory.com/43

http://www.incodom.kr/REST

https://meetup.toast.com/posts/92

반응형

'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