INDEX#
Keywords#
- throttles {drf}
- internalization with i18n {drf}
- generic View {drf}
- APIView {drf}
- ViewSets and routers {drf}
- Serializers
- permissions {drf}
- API testing with APITestCase {drf}
Glossary#
- Serialization (์ง๋ ฌํ)
- ๋ณต์กํ ๋ฐ์ดํฐํ์ (์ฟผ๋ฆฌ์ , ๋ชจ๋ธ ๊ฐ์ฒด)์ ๋จผ์ ํ์ด์ฌ ๋ด์ฅ dict๋ก ๋ณํํ๋ ์ผ์ ๋งํ๋ค. ์ด๋ ๊ฒ ํ๋ ์ด์ ๋ dict๋ JSON์ด๋ XML๊ณผ ๊ฐ์ ํ์์ ์ค์ํ๊ธฐ ์ฝ๊ธฐ ๋๋ฌธ์ด๋ค.
- Deserialization (์ญ์ง๋ ฌํ)
- ๋ฐ๋๋ก, dict๋ก ํ์ฑ์ด ๋ JSON์ด๋ XML์ ๋ฐ์ ๋ค์ ๋ณต์กํ ๋ฐ์ดํฐํ์ ์ผ๋ก ๋ณํํ๋ ์ผ์ ๋งก๋๋ค.
Workflow#
- Form ํด๋์ค๋ฅผ ๋ง๋ค๋ฏ์ด, Serializer๋ฅผ ์์๋ฐ์ ํด๋์ค๋ค์ ์๊ธฐ๋ง์ ํ๋๋ฅผ ๊ฐ์ง ์ ์๋ค. ํ๋๋ฅผ ๊ธฐ๋ฐ์ผ๋ก (์ญ)์ง๋ ฌํ๊ฐ ์งํ์ด ๋๋ฉฐ, ๊ธฐ๋ฅ์ ๋ช๊ฐ์ง๋ง ์ถ๊ฐํ๋ฉด view์์๋ ์ด Serializer ๋ฉ์๋๋ฅผ ํธ์ถํ๊ธฐ๋ง ํ๋ฉด CRUD๊ฐ ๋ค ๋๋ค.
create
,update
๋ฑ์ ์ค๋ฒ๋ผ์ด๋ํ์ฌ Serializer ๊ฐ์ฒด์ ์ํ๋ฅผ ์ค์ ๋ชจ๋ธ์ ์ ์ฉ์ํฌ ์ ์๋ค. ์ด๋ฆ์ฒ๋ผ, ์๋ก์ด ๋ ์ฝ๋๋ฅผ ์ถ๊ฐํ ์๋ ์๊ณ , ๊ธฐ์กด์ ์ธ์คํด์ค๋ฅผ ์์ ํ ์๋ ์๋ค.- ์ญ์ง๋ ฌํ์, ์ ํจ์ฑ ๊ฒ์ฌ๋ ์ํํ ์ ์๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก Form๊ณผ ๋น์ทํ ์ฑ๊ฒฉ์ ๋ง์ด ๋๊ณ ์๊ธฐ ๋๋ฌธ์
is_valid
๋ผ๋ ๋ฉ์๋๋ฅผ ํตํด ํ๋์ ์ ๊ฒฉํ ๋ฐ์ดํฐ๊ฐ ๋ค์ด์๋์ง๋ฅผ ๋ฏธ๋ฆฌ ์์๋ผ ์ ์๋ค.- ์ ํจ์ฑ ๊ฒ์ฌ๋ ๋ณธ์ง์ ์ผ๋ก ํ๋์ ๋ํ ๊ฒ์ฌ์ด๋ค. ๋ฐ๋ผ์ ํ๋์ ์๋ฌ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ, ์ด๋ฅผ dict์ ํํ๋ก ์๋ฌ ์์ธ์ ์๋ ค์ฃผ๊ฒ ๋๋๋ฐ, key์๋ ํ๋์ ์ด๋ฆ์ด, value์๋ ๊ตฌ์ฒด์ ์ธ ์๋ฌ ๋ฉ์์ง๊ฐ ๋ค์ด์ค๊ฒ ๋๋ค.
- Serializer๋ ๋ค์ํ ์์ธํด๋์ค๋ ๊ฐ์ง๊ณ ์๋ค. ์๋ฅผ ๋ค์ด
ValidationError
๋ ๋ฐ์ ์ 400 ์๋ต์ ๋ฆฌํดํ๋ค. Serializer.save
๋ฉ์๋๋Model.save
์๋ ์ ํ ๋ค๋ฅด๋ค. ๊ฐ์ฒด ์ธ์คํด์ค๋ฅผ ๋ฆฌํดํ๋ ๊ฒ์ด์ง, ๋ชจ๋ธ์ ์ ์ฉํ๋ ๋ช ๋ น์ด ์๋๋ผ๋ ๊ฒ์ด๋ค.์ ์ด๋ฐ์๋ก ๋ง๋ค์์งsave, create, update์ ์ฐจ์ด์ {sof}
GET
sequenceDiagram
participant Client
participant Router
participant View
participant DB
participant Serializer
participant Response
Client->>Router: GET ์์ฒญ
Router->>View: get ๋ฉ์๋ ํธ์ถ
View->>DB: QuerySet ์์ฒญ (ํํฐ๋ง, ์ ๋ ฌ ๋ฑ)
DB->>View: QuerySet ๋ฐํ
View->>Serializer: QuerySet ์ ๋ฌํ์ฌ ์ง๋ ฌํ
Serializer-->>View: JSON ๋ฐ์ดํฐ ์์ฑ
View->>Response: Response ๊ฐ์ฒด ์์ฑ
Response-->>Client: ์ง๋ ฌํ๋ JSON ๋ฐ์ดํฐ ๋ฐํ
POST
sequenceDiagram
participant Client
participant Router
participant View
participant Serializer
participant DB
participant Response
Client->>Router: HTTP POST
Router->>View: post ๋ฉ์๋ ํธ์ถ
View->>Serializer: ์์ฒญ ๋ฐ์ดํฐ ์ญ์ง๋ ฌํ
Serializer->>Serializer: is_valid ์คํ (์ ํจ์ฑ ๊ฒ์ฌ)
Serializer-->>View: ์ ํจ์ฑ ํ์ธ ๊ฒฐ๊ณผ ๋ฐํ
View->>Serializer: save ํธ์ถ
Serializer->>DB: create ๋๋ update ์คํ
DB-->>Serializer: ์ ์ฅ๋ ๊ฐ์ฒด ๋ฐํ
Serializer-->>View: ์ ์ฅ๋ ๊ฐ์ฒด๋ฅผ ๋ค์ ์ง๋ ฌํ
View->>Response: Response ๊ฐ์ฒด ์์ฑ
Response-->>Client: ์ง๋ ฌํ๋ JSON ๋ฐ์ดํฐ ๋ฐํ