Django REST Framework

MVTλž€?

Model: 데이터 ꡬ쑰화

View: 데이터가 ν˜λŸ¬λ‹€λ‹ˆλŠ” κ³³

Template: 데이터λ₯Ό ν‘œμ‹œν•˜λŠ” κ³³

API λž€?

  • Application Programming Interface

    • 개발자용 접점

      • κ°œλ°œμžλŠ” Data만 ν•„μš”ν•¨!

Request

: μš”μ²­μ€ URL둜 보낸닀!

Data의 ν‘œκΈ°λ²•

: 약속

  • JSON

    • JavaScript Object Notation

    • Javascript 객체식 ν‘œκΈ°λ²•

  • XML

    • eXtended Markup Language (W3C, 1996)

Why not HTML?

: key값이 반영이 μ•ˆ 됨!

  • κ·Έλž˜μ„œ λ“±μž₯ν•œ 것이 tagλ₯Ό λ‚΄λ§˜λŒ€λ‘œ μ •μ˜ν•  수 μžˆλŠ” XML

Why JSON

  • XML이 λ‹«λŠ” tag λ•Œλ¬Έμ— 길이가 κΈΈλ‹€

    • 돈

μš°λ¦¬κ°€ ν•  일

: Django μ—μ„œ JSON ν˜•μ‹μ— λ§žμΆ°μ„œ Data만 μ œκ³΅ν•œλ‹€!

JSON ... 그리고 λ‚˜μ„œλŠ”?

image-20200511121142258

Javscript & framewokrλ₯Ό λΆ„λ¦¬ν•˜λŠ” 이유

  1. 쒋은 μœ μ € κ²½ν—˜μ„ μœ„ν•΄μ„œ

    • UX μ•ˆ μ’‹μœΌλ©΄ -> User X -> 돈 X

    • data -> 인간이 뭘 μ’‹μ•„ν• κΉŒ?

    • λͺ¨λ°”일 μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜ (μ›Ή)

    • churn (μ΄νƒˆμœ¨)

    • JS ν•„μˆ˜ (Adobe Flash)

  2. λΆ„λ¦¬λ˜μ–΄ μžˆλŠ” 것이 νŽΈν•΄μ„œ

Django λ‹€μ‹œ κΉ”κΈ°

Faker μ‚¬μš©ν•˜κΈ°

faker μ„€μΉ˜

Dummy data λ§Œλ“€κΈ°

RESTful API

https://meetup.toast.com/posts/92arrow-up-right μ°Έκ³ ν•˜κΈ°

: url을 κΉ”λ”ν•˜κ²Œ μ •λ¦¬ν•˜λŠ” 방식 (κ³΅ν†΅μ˜ rule / 약속)

RESTful

  1. HTTP verb (GET, POST)

  2. λͺ…사 (λ³΅μˆ˜ν˜•)둜 ꡬ정

κ·œμΉ™λ“€

  • 동사 URL에 μ§‘μ–΄ λ„£μ§€λ§ˆ! -> HTTP method ν™œμš©ν•΄

    • C (POST)

      • (POST) / articles /

    • R (GET)

      • index (λͺ¨λ“  정보) - (GET) / articles /

      • detail (ν•˜λ‚˜μ˜ 정보) - (GET) / articles / <id>

    • U (PUT/PATCH)

      • (PUT) / articles / <id>

    • D (DELETE)

      • (DELETE) / articles / <id>

  • λͺ©μ μ–΄λ§Œ URL에 μ§‘μ–΄ λ„£μ–΄ -> λ³΅μˆ˜ν˜•μœΌλ‘œ

    • Data

API κ΄€λ ¨ URL

  1. subdomain

    • ex)

      • lab.ssafy.com

      • api.gitbub.com

  2. 뢄리 URL /api/

    • ssafy.com/api/lectures/

    • github.com/api/repos/

  3. versionning

    • ssafy.com/api/v1/lectures/

    • POST /api/articles/1/like/

    • POST /api/articles/1/comments/like/

Django REST Framework (DRF)

djangorestframework μ„€μΉ˜

μ„€μΉ˜λ˜μ–΄ μžˆλŠ”μ§€ 확인

Serialize (직렬화)

포맷의 λ³€ν™˜ (데이터λ₯Ό 전솑/이동)

dict -> JSON (stringify, serialize)

JSON -> dict (parse, deserialize)

직렬화

: Object(μ–Έμ–΄, database) -> String (JSON)

CREATE

image-20200511162710246

raise_exception으둜 Error 예쁘게 좜λ ₯ν•˜κΈ°

ex)

ν•˜λ‚˜λ§Œ 보냄

image-20200511162920160

μ—λŸ¬λ©”μ‹œμ§€

image-20200511162959467

yasg

  • API κ΄€λ ¨ λ¬Έμ„œλ₯Ό μžλ™μœΌλ‘œ 생성

DRF yasg μ„€μΉ˜ν•˜κΈ°

https://drf-yasg.readthedocs.io/en/stable/readme.htmlarrow-up-right

Dummy data JSON 으둜 뢈러였기

fixtures 폴더에 dummy.json λ„£κΈ°

loaddata 둜 dummy.json 을 DB에 λ„£κΈ°

dumpdata 둜 DB에 μžˆλŠ” data dumping ν•˜κΈ°

dumpdata둜 dumping ν•œ dataλ₯Ό JSON file둜 λ§Œλ“€κΈ°

μ΄λ ‡κ²Œ ν•˜λ©΄ λ‹€λ‹₯λ‹€λ‹₯ λΆ™μ–΄μžˆμŒ

indenting μ€˜μ„œ 예쁘게 λ§Œλ“€κΈ°

--indent 2 -> indenting을 2 쀘라

result

Last updated

Was this helpful?