โญ Personal_Study/Vue23 drf-spectacular drf-spectacular swagger โ ์ค์จ๊ฑฐ(swagger)๋ ๊ฐ๋ฐ์๊ฐ REST ์น ์๋น์ค๋ฅผ ์ค๊ณ, ๋น๋, ๋ฌธ์ํ, ์๋นํ๋ ์ผ์ ๋์์ฃผ๋ ์คํ ์์ค ์ํํธ์จ์ด ํ๋ ์์ํฌ โ ์ฆ, API๋ฅผ ์ค๊ณํ๊ณ ๋ฌธ์ํ ํ๋๋ฐ ๋์์ ์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ค์ํ DRF API โ ์ค์จ๊ฑฐ(swagger)๋ฅผ ์์ฑํ ์ ์๋๋ก ๋์์ ์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ -> drf-spectacular drf-spectacular โ Open API 3.0์ ์ง์ํ๋ DRF API OpenAPI ์์ฑ๊ธฐ ์ค์น ๋ฐ ๋ฑ๋ก $ pip install drf-spectacular $ pip freeze > requirements.txt # my_api/settings.py INSTALLED_APPS = [ 'drf_spectacular' ] ๊ธฐ๋ณธ ์ค.. 2022. 11. 24. DRF Auth with Vue DRF Auth with Vue vue server ์์ฒญ ์ ์ ์๋ ์ฌ๋ถ ํ์ธ โ 401 status code โ ์ธ์ฆ๋์ง ์์ ์ฌ์ฉ์์ด๋ฏ๋ก ์กฐํ ์์ฒญ์ด ๋ถ๊ฐ๋ฅ! SignUp Request SignUp Page views/SignUpView.vue // views/SignUpView.vue Sign Up Page username : password : password confirmation : โ Server์์ ์ ์ํ field๋ช ํ์ธ username password1 password2 router/index.js // router/index.js import SignUpView from '@/views/SignUpView' Vue.use(VueRouter) const routes = [ ... { p.. 2022. 11. 23. DFR Auth System DFR Auth System Authentication & Authorization Authentication - ์ธ์ฆ, ์ ์ฆ โ ์์ ์ด๋ผ๊ณ ์ฃผ์ฅํ๋ ์ฌ์ฉ์๊ฐ ๋๊ตฌ์ธ์ง ํ์ธํ๋ ํ์ โ ๋ชจ๋ ๋ณด์ ํ๋ก์ธ์ค์ ์ฒซ ๋ฒ์งธ ๋จ๊ณ โ ์ฆ, ๋ด๊ฐ ๋๊ตฌ์ธ์ง ํ์ธํ๋ ๊ณผ์ โ 401 Unauthorized Authorizaion - ๊ถํ ๋ถ์ฌ, ํ๊ฐ โ ์ฌ์ฉ์์๊ฒ ํน์ ๋ฆฌ์์ค ๋๋ ๊ธฐ๋ฅ์ ๋ํ ์์ธ์ค ๊ถํ์ ๋ถ์ฌํ๋ ๊ณผ์ (์ ์ฐจ) โ ๋ณด์ ํ๊ฒฝ์์ ๊ตฌ๋ํ ๋ถ์ฌ๋ ํญ์ ์ธ์ฆ์ด ๋จผ์ ํ์ํจ ์ฌ์ฉ์๋ ์กฐ์ง์ ๋ํ ์์ธ์ค ๊ถํ์ ๋ถ์ฌ ๋ฐ๊ธฐ ์ ์ ๋จผ์ ์์ ์ ID๊ฐ ์ง์ง์ธ์ง ๋จผ์ ํ์ธํด์ผ ํ๋ค. โ ์๋ฅ์ ๋ฑ๊ธ, ์น ํ์ด์ง์์ ๊ธ์ ์กฐํ/์ญ์ /์์ ํ ์ ์๋ ๋ฐฉ๋ฒ, ์ ํ๊ตฌ์ญ(admin) ๋ฑ๋ฑ ์ธ์ฆ์ด ๋์์ด๋ ๋ชจ๋ ๊ถํ์ ๋ถ์ฌ .. 2022. 11. 22. Vue with DRF Vue with DRF Article Read ์๋ต ๋ฐ์ ๋ฐ์ดํฐ ๊ตฌ์กฐ ํ์ธ โ dataArray์ ๊ฐ ๊ฒ์๊ธ ๊ฐ์ฒด โ ๊ฐ ๊ฒ์๊ธ ๊ฐ์ฒด๋ id, title, content๋ก ๊ตฌ์ฑ store/index.js ์์ // store/index.js export default new Vuex.Store({ state: { articles: [], }, getters: { }, mutations: { GET_ARTICLES(state, articles) { state.articles=articles } }, actions: { getArticles(context) { axios({ method: 'get', url: `${API_URL}/api/v1/articles/` }) .then((res) => { // co.. 2022. 11. 21. Cross - Origin Resource Sharing (CORS) Cross - Origin Resource Sharing (CORS) ๊ฐ์ โ ๋ณด์์์ ์ด์ ๋ก ๋ธ๋ผ์ฐ์ ๋ ๋์ผ ์ถ์ฒ ์ ์ฑ (SOP)์ ์ํด ๋ค๋ฅธ ์ถ์ฒ์ ๋ฆฌ์์ค์ ์ํธ์์ฉ ์ ํ SOP(Same - Origin Policy) โ ๋์ผ ์ถ์ฒ ์ ์ฑ โ ๋ถ๋ฌ์จ ๋ฌธ์๋ ์คํฌ๋ฆฝํธ๊ฐ ๋ค๋ฅธ ์ถ์ฒ์์ ๊ฐ์ ธ์จ ๋ฆฌ์์ค์ ์ฌํธ ์์ฉํ๋ ๊ฒ์ ์ ํํ๋ ๋ณด์ ๋ฐฉ์ โ ์ ์ฌ์ ์ผ๋ก ํด๋ก์ธ ์ ์๋ ๋ฌธ์๋ฅผ ๋ถ๋ฆฌํจ์ผ๋ก์จ ๊ณต๊ฒฉ๋ฐ์ ์ ์๋ ๊ฒฝ๋ก๋ฅผ ์ค์ธ๋ค. Origin - ์ถ์ฒ โ URL์ Protocol, Host, Port๋ฅผ ๋ชจ๋ ํฌํจํ์ฌ ์ถ์ฒ๋ผ๊ณ ๋ถ๋ฅธ๋ค. ์์ CORS - ๊ต์ฐจ ์ถ์ฒ ๋ฆฌ์์ค ๊ณต์ โ ์ถ๊ฐ HTTP Header๋ฅผ ์ฌ์ฉํ์ฌ, ํน์ ์ถ์ฒ์์ ์คํ ์ค์ธ ์น ์ดํ๋ฆฌ์ผ์ด์ ์ด ๋ค๋ฅธ ์ถ์ฒ์ ์์์ ์ ๊ทผํ ์ ์๋ ๊ถํ์ ๋ถํ์๋๋ก ๋ธ๋ผ.. 2022. 11. 20. Vue with DRF: Server & Client Vue with DRF Server & Client Server โ ํด๋ผ์ด์ธํธ์ ์ ๋ณด์ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ ์ปดํจํฐ ์์คํ โ ์๋น์ค ์ ์ฒด๋ฅผ ์ ๊ณต -> Django Web Service โ ์ ๋ณด๋ฅผ ์ ๊ณต -> Django API Service โ DB์ ํต์ ํ๋ฉฐ ๋ฐ์ดํฐ๋ฅผ ์์ฑ, ์กฐํ, ์์ , ์ญ์ ๋ฅผ ๋ด๋น Client โ Server๊ฐ ์ ๊ณตํ๋ ์๋น์ค์ ์ ์ ํ ์์ฒญ์ ํตํด Server๋ก๋ถํฐ ๋ฐํ ๋ฐ์ ์๋ต์ ์ฌ์ฉ์์๊ฒ ํํํ๋ ๊ธฐ๋ฅ์ ๊ฐ์ง ํ๋ก๊ทธ๋จ ํน์ ์์คํ โ ์๋ต๋ฐ์ ์ ๋ณด๋ฅผ ๊ฐ๊ณตํ์ฌ ํ๋ฉด์ ํํ DRF Back skeleton ์ฝ๋ ํ์ธ Models from django.db import models from django.conf import settings # Create your models here... 2022. 11. 20. ์ด์ 1 2 3 4 ๋ค์