#hufslion 2์ฃผ์ฐจ TIL
Django REST framework is a powerful and flexible toolkit for building Web APIs.
Some reasons you might want to use REST framework:
The Web browsable API is a huge usability win for your developers.
Authentication policies including packages for OAuth1a and OAuth2.
Serialization that supports both ORM and non-ORM data sources.
Customizable all the way down - just use regular function-based views if you don't need the more powerful features.
Extensive documentation, and great community support.
Used and trusted by internationally recognised companies including Mozilla, Red Hat, Heroku, and Eventbrite.
Objecting Relating Maping์ ์ค์๋ง์ด๋ฉฐ ๊ฐ์ฒด (Object)์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค (Relational)์ ์ฐ๊ฒฐ(Mapping)ํด์ค๋ค๋ ๋ป.
์ผ๋ฐ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๊ทผํ๋ ค๋ฉด SQL ์ฟผ๋ฆฌ๋ฌธ์ ์ฌ์ฉํด์ผ ํ๋๋ฐ, Djanjo ORM์ ์ฌ์ฉํ๋ฉด๋ค๋ฉด <์ฟผ๋ฆฌ๋ฌธ ์์ด ํ์ด์ฌ ์ฝ๋๋ง์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๊ทผ ๊ฐ๋ฅ
์์
from django.db import models
class User(models.Model):
name = models.CharField(max_length=45)
email = models.CharField(max_length=100, unique=True)
password = models.CharField(max_length=200)
class Meta:
db_table = 'users'
์์ ๊ฐ์ model์ django์ ์ด์ฉํ๋ฉฐ migrateํ๋ฉด
mysql> desc users;
+----------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+----------------+
| id | bigint | NO | PRI | NULL | auto_increment |
| name | varchar(45) | NO | | NULL | |
| email | varchar(100) | NO | UNI | NULL | |
| password | varchar(200) | NO | | NULL | |
+----------+--------------+------+-----+---------+----------------+
์์ ๊ฐ์ ํ ์ด๋ธ์ด ์์ฑ๋๋ค.
์ด๋ ๊ฒ ํ์ด์ฌ ์ฝ๋๋ง์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๊ทผํ์ฌ ์ํ๋ ํ ์ด๋ธ์ ์์ฑํ ์ ์๋ค.
REST API ํ๋ก๊ทธ๋๋ฐ: ์๋ฒ๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๋ฐฉ์
REST API: ์น์ฌ์ดํธ์์ ์ฌ๋ฌ ์ ๋ณด๋ฅผ ๋ณด์ฌ์ฃผ๊ณ ์ถ์ ๋, ์ด ์ ๋ณด๋ค์ด '์ง๊ธ ์ด๋ค ์๋ฒ์ ์ ์ฅ๋์ด ์๋์ง' '์ด๋ป๊ฒ ์ฌ์ฉํ ์ ์๋์ง' ์ ๋ฐฉ๋ฒ

REST ์ํคํ ์ฒ์ ์ ์ฝ ์กฐ๊ฑด์ ์ค์ํ๋ ์ ํ๋ฆฌ์ผ์ด์ ํ๋ก๊ทธ๋๋ฐ ์ธํฐํ์ด์ค
REST: API ์๋๋ฐฉ์์ ๋ํ ์กฐ๊ฑด์ ๋ถ๊ณผํ๋ ์ํํธ์จ์ด ์ํคํ
์ฒ
API: ๋ ์ํํธ์จ์ด ๊ตฌ์ฑ ์์๊ฐ ์๋ก ํต์ ํ ์ ์๊ฒ ํ๋ ๋ฉ์ปค๋์ฆ
์๋ฅผ ๋ค์ด, ๊ธฐ์์ฒญ ์์คํ (์ํํธ์จ์ด 1)์
์ผ์ผ ๊ธฐ์ ๋ฐ์ดํฐ๊ฐ ๋ค์ด ์๋ค๋ฉด
ํด๋ํฐ์ ๋ ์จ ์ฑ(์ํํธ์จ์ด 2)์ API๋ฅผ ํตํด
์ด ๊ธฐ์์ฒญ ์์คํ ๊ณผ โ๋ํโํ์ฌ
์ฑ์ ์ต์ ๋ ์จ ์ ๋ณด๋ฅผ ํ์ํฉ๋๋ค.

ํด๋ผ์ด์ธํธ์ ์๋ฒ๋ก ์ค๋ช
ํ ์ ์์ด์.
โ
์์ฒญ์ ๋ณด๋ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ํด๋ผ์ด์ธํธ,
์๋ต์ ๋ณด๋ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋ฒ๋ผ๊ณ ํฉ๋๋ค.
โ
์์ ์์๋ ๊ธฐ์(๋ ์จ) ์์์
๊ธฐ์์ฒญ์ ๋ ์จ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์๋ฒ์ด๊ณ
๋ชจ๋ฐ์ผ ์ฑ์ ํด๋ผ์ด์ธํธ๋ผ๊ณ ๋ณด๋ฉด ๋ผ์.
โ
๊ฐ๋จํ๊ฒ ๋งํ๋ฉด ์๋ฒ๋ฅผ ๋ง๋๋ ๊ฐ๋ฐ์๊ฐ
'์ฐ์ฃผ(๊ธฐ๋ฅ์ ํ)๋ฅผ ๋ง๋๋ ์ฌ๋'์ด๋ผ๋ฉด ํด๋ผ์ด์ธํธ
๊ฐ๋ฐ์๋ ์ง๊ตฌ(์ธ๋ถ ๊ธฐ๋ฅ)๋ฅผ ๋ง๋๋ ์ฌ๋'
[์ถ์ฒ] '์๋ฒ ๊ฐ๋ฐ'์ด ๋ญ์ง ๊ถ๊ธํด? REST API ์ DRF(Django Rest Framework) ์ ๋๋ก ์์๋ณด๊ธฐ!!|์์ฑ์ SW๋ง์์คํธ๋ก

<๋ด๊ฐ๋ง๋ฌ>
HTTP ์์ฒญ์ ์ฒ๋ฆฌํ๋ ํจ์๋ ํด๋์ค. ์์ฒญ์ ๋ฐ์ ์ฒ๋ฆฌํ ํ์ ์ ์ ํ ์๋ต์ ๋ฐํ.
ํ์ด์ฌ ์ฝ๋๋ก SQL์ ์๋ ์์ฑ/์ํ. ํ๋์ ์ฝ๋๋ก PostgreSQL, MySQL, MariaDB, Oracle ๋ฑ์ ์ง์ํ๋ฉฐ, ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ์ ์ถ์ํ๋ฅผ ์ ๊ณต.
๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง์ ๋ณ๊ฒฝ์ ์์ฝ๊ฒ ๊ด๋ฆฌํด์ค. ๋ชจ๋ธ ์ฝ๋ ๋ณ๊ฒฝ ๋ง์ผ๋ก ๋ณ๊ฒฝ๋ด์ญ์ ํ์ ํด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ํ ์ ์๋๋ก ๋์์ค.
โ๏ธ ํผ
์์ฑ/์์ HTML ์ ๋ ฅํผ์ ์๋ ์์ฑํ๊ณ , ์ฌ์ฉ์์ ์ ๋ ฅ๊ฐ์ ๋ํ ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ์ํ. ๋ํ ์ ํจํ ๋ฐ์ดํฐ๋ฅผ ๋ฉ์๋ ํธ์ถ ๋ง์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ ์ ์์.
โ๏ธ ํ ํ๋ฆฟ
๋ณต์กํ ๋ฌธ์์ด ์กฐํฉ ์์ ์ ๊ฐ์ํ. ์ฃผ๋ก HTML์ ์์ฑํ๋ ๋ฐ ์ฌ์ฉ๋์ง๋ง, ๋ค๋ฅธ ํ ์คํธ ๊ธฐ๋ฐ ํ์์์๋ ์ ์ฉํ ์ ์์.
โ๏ธ ์ธ์ฆ๊ณผ ๊ถํ
django.contrib.auth ์ฅ๊ณ ๊ธฐ๋ณธ ์ฑ์ ํตํ ๊ฐ๋ ฅํ ์ธ์ฆ๊ณผ ๊ถํ ์ง์
โ๏ธ ์ ์ /๊ทธ๋ฃน/๊ถํ ๋ชจ๋ธ
๊ฐ๋ ฅํ ์ธ์ฆ๊ณผ ๊ถํ ๊ด๋ฆฌ ๊ธฐ๋ฅ์ ์ ๊ณต. ์ธ์ฆ์ ์ํ ๋ชจ๋ธ๊ณผ ํผ/๋ทฐ๋ฅผ ์ง์.
๊ถํ ๊ด๋ฆฌ๋ฅผ ์ธ๋ฐํ๊ฒ ์ค์ ํ ์ ์์ด์, ํน์ ์ฌ์ฉ์๋ ๊ทธ๋ฃน์๊ฒ๋ง ์ ๊ทผ์ ํ์ฉํ๋ ๋ฑ์ ๋ณด์ ์๊ตฌ์ฌํญ์ ๋ง์กฑ ๊ฐ๋ฅ.โ๏ธ View์์์ ๊ถํ ์ฒดํฌ
๊ฐ ๋ชจ๋ธ ๋ณ๋ก add/change/view/delete ๊ถํ์ด ๊ธฐ๋ณธ ์ค์ ๋์ด์์.