[DRF] Requests

GreenBeanΒ·2021λ…„ 12μ›” 3일
0
post-thumbnail

Django REST Framework

Requests

  • REST ν”„λ ˆμž„μ›Œν¬μ˜ Request ν΄λž˜μŠ€λŠ” ν‘œμ€€ HttpRequestλ₯Ό ν™•μž₯ν•˜μ—¬ REST ν”„λ ˆμž„μ›Œν¬μ˜ μœ μ—°ν•œ request ꡬ문 뢄석 및 μš”μ²­ 인증을 지원

Request parsing

  • REST ν”„λ ˆμž„μ›Œν¬μ˜ Request κ°μ²΄λŠ” μœ μ—°ν•œ request ꡬ문 뢄석 κΈ°λŠ₯을 μ œκ³΅ν•˜λ―€λ‘œ μ‚¬μš©μžκ°€ 일반적으둜 form 데이터λ₯Ό μ²˜λ¦¬ν•˜λŠ” 것과 같은 λ°©μ‹μœΌλ‘œ JSON 데이터 λ˜λŠ” λ‹€λ₯Έ λ―Έλ””μ–΄ μœ ν˜•μœΌλ‘œ μš”μ²­μ„ 처리 ν•  수 있음

.data

  • request.dataλŠ” μš”μ²­ 본문의 ꡬ문 뢄석 된 λ‚΄μš©μ„ λ°˜ν™˜
  • μ΄λŠ” λ‹€μŒμ„ μ œμ™Έν•˜κ³  ν‘œμ€€ request.POST 및 request.FILES 속성과 μœ μ‚¬
    • μ—¬κΈ°μ—λŠ” 파일과 파일이 μ•„λ‹Œ μž…λ ₯을 ν¬ν•¨ν•˜μ—¬ νŒŒμ‹± 된 λͺ¨λ“  λ‚΄μš©μ΄ 포함됨
    • POSTκ°€ μ•„λ‹Œ HTTPλ©”μ†Œλ“œμ˜ 컨텐츠 뢄석을 지원
      • 즉, PUTκ³Ό PATCH μš”μ²­μ˜ 컨텐츠에 μ•‘μ„œμŠ€ ν•  수 있음
    • μ΄λŠ” form ν…Œμ΄ν„°λ₯Ό μ§€μ›ν•˜λŠ” 것보닀 REST ν”„λ ˆμž„μ›Œν¬μ˜ μœ μ—°ν•œ request ꡬ문 뢄석을 지원
      • 예λ₯Ό λ“€μ–΄, λ“€μ–΄μ˜€λŠ” form 데이터λ₯Ό μ²˜λ¦¬ν•˜λŠ” 것과 같은 λ°©μ‹μœΌλ‘œ λ“€μ–΄μ˜€λŠ” JSON 데이터λ₯Ό 처리 ν•  수 있음

.query_params

  • request.query_paramsλŠ” request.GET에 λŒ€ν•΄ 보닀 μ •ν™•ν•˜κ²Œ λͺ…λͺ… 된 λ™μ˜μ–΄
  • μ½”λ“œ λ‚΄μ—μ„œ λͺ…확성을 μœ„ν•΄ Django의 ν‘œμ€€ request.GET λŒ€μ‹  request.query_paramsλ₯Ό μ‚¬μš©ν•˜λŠ” 것이 μ’‹μŒ
    • μ΄λ ‡κ²Œ ν•˜λ©΄ μ½”λ“œλ² μ΄μŠ€λ₯Ό 보닀 μ •ν™•ν•˜κ³  λͺ…ν™•ν•˜κ²Œ μœ μ§€ν•  수 있음
    • λͺ¨λ“  HTTP λ©”μ†Œλ“œ μœ ν˜•μ—λŠ” GET request 뿐만 μ•„λ‹ˆλΌ 쿼리 parameterκ°€ 포함될 수 있음

.parsers

  • APIView ν΄λž˜μŠ€λ‚˜ @api_view λ°μ½”λ ˆμ΄ν„°λŠ” 뷰에 μ„€μ • 된 parser_classesλ‚˜ DEFAULT_PARSER_CLASSES 섀정에 따라 속성이 μžλ™μœΌλ‘œ Parser μΈμŠ€ν„΄μŠ€ λͺ©λ‘μœΌλ‘œ μ„€μ •λ˜λ„λ‘ 함
  • 일반적으둜 이 속성에 μ•‘μ„œμŠ€ ν•  ν•„μš”λŠ” μ—†μŒ

Tip! ν΄λΌμ΄μ–ΈνŠΈκ°€ μ‘°μž‘ 된 μ½˜ν…μΈ λ₯Ό 보낸 경우

  • request.data에 μ•‘μ„œμŠ€ν•˜λ©΄ ParserErrorκ°€ λ°œμƒν•  수 μžˆμŠ΅λ‹ˆλ‹€. 기본적으둜 REST ν”„λ ˆμž„μ›Œν¬μ˜ APIView ν΄λž˜μŠ€λ‚˜ @api_view λ°μ½”λ ˆμ΄ν„°λŠ” 였λ₯˜λ₯Ό ν¬μ°©ν•˜κ³ , 400 Bad Request 응닡을 λ°˜ν™˜
  • ν΄λΌμ΄μ–ΈνŠΈκ°€ νŒŒμ‹± ν•  수 μ—†λŠ” content-type을 가진 requestλ₯Ό 보내면 UnsuppoertedMediaType μ˜ˆμ™Έκ°€ λ°œμƒ
  • 이 μ˜ˆμ™ΈλŠ” 기본적으둜 ν¬μ°©λ˜μ–΄ μ§€μ›λ˜μ§€ μ•ŠλŠ” λ―Έλ””μ–΄ μœ ν˜• 응닡을 λ°˜ν™˜
profile
🌱 Backend-Dev | hwaya2828@gmail.com

0개의 λŒ“κΈ€