์ด๋ฒˆ ์ฃผ ๊ฐœ์ธ๊ณผ์ œ

๐ŸŽย Goal

๐Ÿ’ก DRF ๋‹จ๋‹จํžˆ ํ•˜๊ธฐ! 1. ๊ธฐ๋ณธ์ ์ธ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๊ธฐ๋Šฅ์ธ CRUD ์ต์ˆ™ํ•ด์ง€๊ธฐ 2. DRF ๋ชจ๋ธ ์ฟผ๋ฆฌ์…‹์— ์ต์ˆ™ํ•ด์ง€๊ธฐ 3. DRF ์‹œ๋ฆฌ์–ผ๋ผ์ด์ €์— ์ต์ˆ™ํ•ด์ง€๊ธฐ

๐Ÿย ์ƒ์„ธ ์š”๊ตฌ์‚ฌํ•ญ

  • ํšŒ์› ๊ธฐ๋Šฅ
    1. ์‚ฌ์šฉ์ž๊ฐ€ ํšŒ์›๊ฐ€์ž…์„ ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
      • ์‚ฌ์šฉ์ž ํ…Œ์ด๋ธ”(User) ํ•„์ˆ˜ ํ•„๋“œ
        1. id : ๋ฐ์ดํ„ฐ ๊ณ ์œ  id ์ž…๋‹ˆ๋‹ค(PK).
        2. email : ์•„์ด๋””๋กœ ์‚ฌ์šฉ๋˜๋ฉฐ ์œ ๋‹ˆํฌํ•œ ๊ฐ’์ž…๋‹ˆ๋‹ค.
        3. password : ๋น„๋ฐ€๋ฒˆํ˜ธ๋กœ ์‚ฌ์šฉ๋˜๋ฉฐ ํšŒ์› ์ƒ์„ฑ, ์ˆ˜์ • ์‹œ ์•”ํ˜ธํ™”(ํ•ด์‹œ)๋œ ๊ฐ’์„ ์ €์žฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
        4. name : ์‚ฌ์šฉ์ž์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.
        5. gender : ์‚ฌ์šฉ์ž์˜ ์„ฑ๋ณ„์ž…๋‹ˆ๋‹ค.
        6. age : ์‚ฌ์šฉ์ž์˜ ๋‚˜์ด์ž…๋‹ˆ๋‹ค.
        7. introduction : ์‚ฌ์šฉ์ž์˜ ์ž๊ธฐ์†Œ๊ฐœ ๊ธ€ ์ž…๋‹ˆ๋‹ค.
      • POST ์š”์ฒญ ์‹œ ํšŒ์›๊ฐ€์ž…์ด ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    2. ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์ธ์„ ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
      • POST ์š”์ฒญ ์‹œ ์žฅ๊ณ  ์„ธ์…˜ ๊ธฐ๋Šฅ์„ ์ด์šฉํ•ด ๋กœ๊ทธ์ธ์ด ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
      • ์„ธ์…˜ ๊ธฐ๋ฐ˜์˜ ์ธ์ฆ์ด ์ต์ˆ™ํ•˜๋‹ค๋ฉด JWT๊ธฐ๋ฐ˜ ์ธ์ฆ์œผ๋กœ ๊ตฌํ˜„ํ•ด๋ณด๋Š” ๊ฒƒ๋„ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.
    3. ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์•„์›ƒ์„ ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
      • POST ์š”์ฒญ ์‹œ ์„ธ์…˜ ์ •๋ณด๋ฅผ ์‚ญ์ œํ•ด ๋กœ๊ทธ์•„์›ƒ์ด ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    4. ์‚ฌ์šฉ์ž๊ฐ€ ํšŒ์› ์ •๋ณด๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
      • PUT ์š”์ฒญ ์‹œ ์•„์ด๋””๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ํšŒ์› ์ •๋ณด๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
      • ๋น„๋ฐ€๋ฒˆํ˜ธ ์ˆ˜์ • ์‹œ ์•”ํ˜ธํ™”๋œ ๊ฐ’์„ ์ €์žฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    5. ์‚ฌ์šฉ์ž๊ฐ€ ํšŒ์› ํƒˆํ‡ด๋ฅผ ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
      • DELETE ์š”์ฒญ ์‹œ ๊ณ„์ •์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค(ํƒˆํ‡ด).
  • TODO LIST ๊ธฐ๋Šฅ
    1. ์‚ฌ์šฉ์ž๊ฐ€ ํ• ์ผ(Todo)์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
      • ํ• ์ผ ํ…Œ์ด๋ธ”(Todo) ํ•„์ˆ˜ ํ•„๋“œ
        1. id : ๋ฐ์ดํ„ฐ ๊ณ ์œ  id ์ž…๋‹ˆ๋‹ค(PK).
        2. title : ํ• ์ผ ์ œ๋ชฉ์ž…๋‹ˆ๋‹ค.
        3. is_complete : ์™„๋ฃŒ ์—ฌ๋ถ€์ž…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ํƒ€์ž…์€ boolean์ด๋ฉฐ default false ์„ค์ •์„ ํ•ฉ๋‹ˆ๋‹ค.
        4. created_at : ํ• ์ผ ์ƒ์„ฑ ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค.
        5. updated_at : ํ• ์ผ์˜ ๋งˆ์ง€๋ง‰ ์ˆ˜์ • ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค.
        6. completion_at : ํ• ์ผ ์™„๋ฃŒ ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค.
        7. user_id : ์‚ฌ์šฉ์ž ํ…Œ์ด๋ธ”๊ณผ FK๋กœ ๊ด€๊ณ„ํ˜•์„ฑ์ด ๋˜์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.
      • POST ์š”์ฒญ ์‹œ ํ• ์ผ์ด ์ƒ์„ฑ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    2. ์‚ฌ์šฉ์ž๊ฐ€ ํ• ์ผ ๋ชฉ๋ก(Todo list)์„ ์กฐํšŒํ•  ์ˆ˜ ์žˆ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.
      • GET ์š”์ฒญ ์‹œ ํ• ์ผ ๋ชฉ๋ก์„ ์กฐํšŒํ•  ์ˆ˜ ์žˆ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.

      • response ์˜ˆ์‹œ

        [
            {
                "id": 1,
                "title": "๊ณผ์ œํ•˜๊ธฐ",
                "is_complete": "True",
                "created_at": "2023-04-01",
                "updated_at": "",
                "completion_at": "2023-04-05",
            },
            {
                "id": 2,
                "title": "๊ณต๋ถ€ํ•˜๊ธฐ",
                "is_complete": "False",
                "created_at": "2023-04-02",
                "updated_at": "2023-04-03",
                "completion_at": ""
            },
            ...
        ]
    3. ์‚ฌ์šฉ์ž๊ฐ€ ํ• ์ผ(Todo)์„ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.
      • PUT์š”์ฒญ ์‹œ ํ• ์ผ ์ •๋ณด๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.
      • ํ• ์ผ์„ ์™„๋ฃŒํ•œ ๊ฒฝ์šฐ is_complete๋ฅผ True๋กœ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.
        ์™„๋ฃŒํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ False๋กœ ๋‹ค์‹œ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.
      • ์ œ๋ชฉ(title)์„ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.
    4. ์‚ฌ์šฉ์ž๊ฐ€ ํ• ์ผ(Todo)์„ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.
      • DELETE ์š”์ฒญ ์‹œ ํ• ์ผ์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

๊ณผ์ œ ํ›„๊ธฐ

ํ† ํฐ ๋ฐฉ์‹์œผ๋กœ ๋กœ๊ทธ์ธ์„ ๊ตฌํ˜„ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋กœ๊ทธ์•„์›ƒ์€ ํ•  ํ•„์š”๊ฐ€ ์—†์—ˆ๋‹ค.
๋Œ€์‹  JWT๊ธฐ๋ฐ˜ ์ธ์ฆ์„ ํ•ด์„œ์ธ์ง€ ๊ฐœ์ธ์ •๋ณด ์ˆ˜์ •ํ•  ๋•Œ ์• ๋ฅผ ๋งŽ์ด ๋จน์—ˆ๋‹ค. password๋ฅผ ์ˆ˜์ •ํ•ด๋„ ํ•ด์‹œ์ฒ˜๋ฆฌ ๋˜์–ด DB์— ์ €์žฅ์ด ๋˜์–ด์•ผ ํ•˜๋Š”๋ฐ ์ด๊ฒŒ ์ฐธ ํž˜๋“ค์—ˆ๋‹ค..
๊ธฐ์ˆ ๋งค๋‹ˆ์ €๋‹˜์˜ ๋„์›€์„ ๋ฐ›์•„์„œ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์•„์ง๋„ ์™„์ „ํžˆ ์ดํ•ด๋ฅผ ๋ชป ํ•จ..
์กฐ๋งŒ๊ฐ„ ๋ฉ”๋ชจํ•œ ๋‚ด์šฉ๋“ค์„ ํ† ๋Œ€๋กœ ์ •๋ฆฌํ•ด ๋†“์œผ๋ ค๊ณ  ํ•œ๋‹ค.

์ด๋ฒˆ ๊ณผ์ œ๋„ ์–ด์ฐŒ์ €์ฐŒ ํ–ˆ์ง€๋งŒ ๋ญ”๊ฐ€ ๋จธ๋ฆฌ์— ํŒ ๋‚จ๋Š”๋‹ค๋Š” ๋Š๋‚Œ๋ณด๋‹ค๋Š” ๊ตฌํ˜„์€ ํ•ด๋ƒˆ๋‹ค..! ๋ผ๋Š” ๋Š๋‚Œ..!
๊ทธ๋ž˜๋„ ์ „์— ํ–ˆ๋˜ ๋‚ด์šฉ๋“ค๊ณผ ์—ฐ๊ฒฐ๋˜๊ฑฐ๋‚˜ (์ƒ์†์ด๋‚˜ ๋กœ๊ทธ์ธ, serializer ๋“ฑ..) ๊ฐ•์˜๋ฅผ ํ†ตํ•ด ์†๋„ ๋ชป ๋Œ€๋Š” ๊ฒƒ ์—†์ด ํ•ด๋‚ธ ๊ฒƒ ๊ฐ™๋‹ค.
๋งˆ์น˜ ๋งˆ์ฒดํ…Œ๋ฅผ ์ž˜ ๋‹ค๋ค„์„œ ์ •๊ธ€์˜ ๋ฉ๊ตด๊ณผ ๋‚˜๋ญ‡๊ฐ€์ง€๋“ค์„ ํ—ค์ณ๋‚˜๊ฐ€๋ฉด์„œ ๋ชฉ์ ์ง€์— ๋„์ฐฉ ํ–ˆ์ง€๋งŒ ์–ด๋–ป๊ฒŒ ์–ด๋””๋กœ ๊ธธ์„ ๋งŒ๋“ค์–ด์„œ ์˜จ ๊ฑด์ง€ ์ด๋™ ๋ฃจํŠธ๋ฅผ ์™„๋ฒฝํžˆ ๊ธฐ์–ตํ•˜๊ธด ์–ด๋ ค์šด ๋Š๋‚Œ..?

๊ทธ๋ž˜๋„ ์ด๋ฒˆ ๊ณผ์ œ๋กœ ์ „์ฒด์ ์ธ ํ๋ฆ„๊ณผ ๊ธฐ๋ณธ์— ๋Œ€ํ•ด์„œ ๋‹ค์‹œ ๋ฐฐ์šฐ๋ฉด์„œ ์กฐ๊ธˆ์€ ๋” ๋‹จ๋‹จํ•ด์กŒ๊ณ , ๋ถ€์กฑํ•จ๋„ ๋งŽ์ด ๋Š๊ปด์„œ ์„ฑ์žฅ์˜ ์›๋™๋ ฅ์ด ๋˜์—ˆ๋‹ค.
์ผ์ฃผ์ผ ํ›„ ํŒ€๊ณผ์ œ๊ฐ€ ์‹œ์ž‘๋ ํ…๋ฐ ๊ทธ ๋•Œ๊นŒ์ง€ ์กฐ๊ธˆ ๋” ํŒ€์— ๋„์›€์ด ๋  ์ˆ˜ ์žˆ๊ฒŒ
๊ฐ€๋ณด์ž๊ณ !!

profile
๊ฐ€๋ณด์ž๊ณ 

0๊ฐœ์˜ ๋Œ“๊ธ€

๊ด€๋ จ ์ฑ„์šฉ ์ •๋ณด