Generic view์ ๊ฒฝ์ฐ CRUD์์ ์ ์ํ ๊ณตํต ๋ถ๋ถ์ ์ ๊ณตํ๋ ๋ทฐ์์ ์ด์ ํฌ์คํ ์์ ์์๋ณด์๋ค.
์ ๋ค๋ฆญ ๋ทฐ๋ ์ฌ๋ฌ๊ฐ์ Mixinํด๋์ค๋ฅผ ๊ฒฐํฉํ์ฌ ์ฌ์ฉํ๊ฒ ๋๋ค.
์ค๋์ ์ ๋ค๋ฆญ๋ทฐ์ ํจ๊ผ ์ฐ์ด๋ ๋ฏน์ค์ธ ํด๋์ค์ ๋ํด์ ์์๋ณด๋๋ก ํ์.
Mixin ์๊ฐ
๋ฏน์ค์ธ์ ์ฌ์ฉํ์ง ์๋๋ค๋ฉด, Genericview๋ฅผ ์ฌ์ฉํ ๋ ๋ชจ๋ ๊ธฐ๋ฅ์ ์ง์ ๊ตฌํํด์ผ ํ๋ค.
ํ์ง๋ง ์ฌ์ค์ CRUD์์ ๊ณผ ๋ชฉ๋ก์ถ๋ ฅ๊ฐ์ ์์ ์ ์๋ง์ ๋ทฐ์ ๊ณตํต์ ์ผ๋ก ๋ค์ด๊ฐ๋ ์์ ์ผ ๊ฒ์ด๋ค.
์ด ๊ธฐ๋ฅ๋ค์ Mixin์ ํตํด์ ๊ฐ๋จํ๊ฒ ์ ๊ณต๋ฐ์ ์ ์๋ค.
mixins๋ rest_framework.mixins ๋ชจ๋์ ์๋ค.
ListModelMixin
.list(request, *args, **kwargs)๋ฉ์๋๋ฅผ ์ ๊ณตํ์ฌ ์ฟผ๋ฆฌ์ ์ ๋ชฉ๋ก์ ํ์ํ๋ค.
์ฟผ๋ฆฌ์ ์ด ์ฑ์์ ธ ์์ผ๋ฉด 200 OK์๋ต์ ๋ฐํํ๊ณ , ํ์ด์ง๋ค์ด์ ์ ์ค์ ํ ์ ์๋ค.
CreateModelMixin
.create(request, *args, **kwargs)๋ฉ์๋๋ฅผ ์ ๊ณตํ์ฌ ์ ๋ชจ๋ธ ์ธ์คํด์ค๋ฅผ ์์ฑํ๊ณ ์ ์ฅํ๋ ์ญํ ์ ํ๋ค.
๊ฐ์ฒด๊ฐ ์์ฑ๋๋ฉด ์๋ต ๋ณธ๋ฌธ์ ๊ฐ์ฒด์ ์๋ฆฌ์ผ๋ผ์ด์ฆํ๋ ํํ๊ณผ 201 Created์๋ต์ ๋ฐํํ๋ค. ๋ง์ฝ ์๋ฆฌ์ผ๋ผ์ด์ฆ์ urlํค๊ฐ ํฌํจ๋์ด ์๋ค๋ฉด ์๋ต์ Location ํค๋๊ฐ ํด๋น ๊ฐ์ผ๋ก ์ฑ์์ง๋ค.
๊ฐ์ฒด๋ฅผ ์์ฑํ๊ธฐ ์ํด ์์ฒญ๋ ๋ฐ์ดํฐ๊ฐ ์ ํจํ์ง ์์ ๊ฒฝ์ฐ 400Bad Request ์๋ต์ ๋ฐํํ๋ค. ์๋ต ๋ณธ๋ฌธ์๋ 400 Bad request๊ฐ ๋ฐํ๋๋ค.
RetrieveModelMixin
.retrieve(request, *args, **kwargs)๋ฉ์๋๋ฅผ ์ ๊ณตํ์ฌ ์๋ต์์ ์กด์ฌํ๋ ๊ธฐ์กด ๋ชจ๋ธ ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ค.
๊ฐ์ฒด๋ฅผ ๊ฒ์ํ ์ ์๋ ๊ฒฝ์ฐ์๋ ์๋ต์ ๋ณธ๋ฌธ์ ๊ฐ์ฒด์ ์ง๋ ฌํ๊ดธ ํํ๊ณผ 200 OK ์๋ต์ ๋ฐํํ๋ค. ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ 404 Not Found๊ฐ ๋ฐํ๋๋ค.
UpdateModelMixin
.update(request, *args, **kwargs)๋ฉ์๋๋ฅผ ์ ๊ณตํ์ฌ ๊ธฐ์กด์ ๋ชจ๋ธ ์ธ์คํด์ค๋ฅผ ์ ๋ฐ์ดใ กํ์ฌ ์ ์ฅํ๋ค.
.partial_update (request, *args, **kwargs)๋ฉ์๋๋ฅผ ์ ๊ณตํ์ฌ ๋ชจ๋ ํ๋๊ฐ ์ ํ์ฌํญ์ผ๋ก ๋ถ๋ถ๋ณ๊ฒฝ์ด ๊ฐ๋ฅํ๋ค. ์ด๋ ์์ฒญ์ HTTP PATCH requests์ฌ์ผ ํ๋ค.
์ฑ๊ณตํ๋ฉด 200 OK, ์คํจํ๋ฉด 404 NOT FOUND ๊ฐ ๋ฆฌํด๋๋ค.
DestroyModelMixin
.destroy(request, *args, **kwargs) ๋ฉ์๋๋ฅผ ์ ๊ณตํ์ฌ ๊ธฐ์กด ๋ชจ๋ธ ์ธ์คํด์ค๋ฅผ ์ญ์ ํ๋ค.
์ฑ๊ณตํ๋ฉด 200 OK, ์คํจํ๋ฉด 404 NOT FOUND ๊ฐ ๋ฆฌํด๋๋ค.
'๐ฅProject > Team22' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Team22] DRF API ๋ฌธ์ - drf yasg (0) | 2024.03.11 |
---|---|
[Team22]django .env ํ๊ฒฝ๋ณ์ ํ์ฉํ๊ธฐ (0) | 2024.02.15 |
[Team 22] DRF - Generic API View (0) | 2024.02.08 |
[Team 22] DRF Authentication - dj-rest-auth (0) | 2024.02.08 |
[Team 22] Django REST framework (3) - Viewset (0) | 2024.02.03 |