λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
Frontend/GraphQL

[ GraphQL ] Schema type 쀑 λ¦¬μŠ€νŠΈμ™€ Non-null νƒ€μž…μ— λŒ€ν•΄ μ•Œμ•„λ³΄μž

by YWTechIT 2022. 11. 1.
728x90

πŸ“ Schema type 쀑 λ¦¬μŠ€νŠΈμ™€ Non-null νƒ€μž…μ— λŒ€ν•΄ μ•Œμ•„λ³΄μž

graphQL둜 API μš”μ²­μ„ ν•  λ•Œ 쿼리에 λ‹€μ–‘ν•œ νƒ€μž…μ„ 넣을 수 μžˆλ‹€. 슀칼라 νƒ€μž…λ“€μ΄ 기본으둜 μ œκ³΅λ˜λŠ” 것은 λ‹€λ“€ μ•Œκ³  μžˆμ„ 것이닀.

/**
 * 1. Int: λΆ€ν˜Έκ°€ μžˆλŠ” 32λΉ„νŠΈ μ •μˆ˜.
 * 2. Float: λΆ€ν˜Έκ°€ μžˆλŠ” λΆ€λ™μ†Œμˆ˜μ  κ°’.
 * 3. String: UTF-8 λ¬Έμžμ—΄
 * 4. Boolean: true | false
 * 5. ID: μΊμ‹œμ˜ ν‚€λ‘œμ¨ 자주 μ‚¬μš©λ˜λŠ” 고유 μ‹λ³„μžλ₯Ό λ‚˜νƒ€λ‚Έλ‹€. IDνƒ€μž…μ€ Stringκ³Ό 같은 λ°©λ²•μœΌλ‘œ μ§λ ¬ν™”λ˜μ§€λ§Œ, ID둜 μ •μ˜ν•˜λŠ” 것은 μ‚¬λžŒμ΄ 읽을 수 μžˆλ„λ‘ ν•˜λŠ” μ˜λ„κ°€ μ•„λ‹Œκ²ƒμ„ μ˜λ―Έν•œλ‹€.
*/

ν•˜μ§€λ§Œ, 이번 μž‘μ—…μ—μ„œ API μš”μ²­ μ‹œ λ‹¨μˆœ 슀칼라 νƒ€μž…μ΄ μ•„λ‹ˆλΌ 리슀트 νƒ€μž…μœΌλ‘œ μš”μ²­ν•˜λŠ” κ²½μš°λ„ μžˆλ‹€. 그럴 땐 μ–΄λ–»κ²Œ μž‘μ„±ν•΄μ•Ό ν•˜λŠ”μ§€, 그리고 !λŠ” μ–΄λ–€ 의미λ₯Ό λ‚˜νƒ€λ‚΄λŠ”μ§€ μ•Œμ•„λ³΄μž.

 

λ¦¬μŠ€νŠΈλŠ” νƒ€μž…μ„ List둜 ν‘œμ‹œν•˜κ³  ν•΄λ‹Ή νƒ€μž…μ˜ λ°°μ—΄λ‘œ λ°˜ν™˜ν•œλ‹€. 리슀트λ₯Ό type으둜 μž‘μ„±ν•˜λŠ” 것은 어렡지 μ•Šμ€λ°, 슀칼라 값에 λŒ€κ΄„ν˜Έ([])λ₯Ό λΆ™μ—¬μ£Όλ©΄ λœλ‹€.

 

λ‹€μŒμ€ Non-Null인데, Non-Null은 νƒ€μž… 뒀에 λŠλ‚Œν‘œ(!)λ₯Ό μΆ”κ°€ν•˜μ—¬ λ‚˜νƒ€λ‚Έλ‹€. 그러면, μ„œλ²„λŠ” 항상 이 ν•„λ“œμ— λŒ€ν•΄ null 이 μ•„λ‹Œ 값을 λ°˜ν™˜ν•˜λŠ” 것을 μ˜ˆμƒν•˜κ³  λ§Œμ•½, null이 λ°˜ν™˜λ˜λ©΄ 였λ₯˜λ₯Ό λ°˜ν™˜ν•œλ‹€.

728x90

λ§ˆμ§€λ§‰μœΌλ‘œ Non-Nullκ³Ό Listλ₯Ό κ²°ν•©ν•˜λŠ” 경우인데, 이게 μ€κ·Όνžˆ ν—·κ°ˆλ¦°λ‹€. 첫 번째둜 [] 내뢀에 !λ₯Ό κ°€μ§€λŠ” κ²½μš°λ‹€. ($ids: [ID!] ) 이 경우 List μžμ²΄λŠ” null 일 수 μžˆμ§€λ§Œ, null을 κ°€μ§ˆ μˆ˜λŠ” μ—†λ‹€. 예λ₯Ό λ“€λ©΄ λ‹€μŒκ³Ό κ°™λ‹€.

// $ids: [ID!]

/**
 * ids: null // valid
 * ids: [] // valid
 * ids: ['123123', '234234'] // valid
 * ids: ['123123', null, '234234'] // error
*/

λ°˜λŒ€λ‘œ !λ₯Ό 리슀트 λ°”κΉ₯에 μ •μ˜ν•˜λ©΄ λͺ©λ‘ μžμ²΄λŠ” null 일 수 μ—†μ§€λ§Œ, null 값을 포함할 수 μžˆλ‹€.

// $ids: [ID]!

/**
 * ids: null // error
 * ids: [] // valid
 * ids: ['123123', '234234'] // valid
 * ids: ['123123', null, '234234'] // valid
*/

κ·Έλž˜μ„œ !λ₯Ό List 내뢀와 외뢀에 μž‘μ„±ν•˜λ©΄ 잠재적인 μ—λŸ¬λ₯Ό 방지할 수 μžˆλ‹€.

// $ids: [ID!]!

/**
 * ids: null // error
 * ids: [] // valid
 * ids: ['123123', '234234'] // valid
 * ids: ['123123', null, '234234'] // error
*/

queryλŠ” λ‹€μŒκ³Ό κ°™λ‹€.

query GetPois($ids: [ID!]!){
 getPois(ids: $ids) {
   id
   type
   source
 } 
}

# query variables
{
  "ids": [
    "123-123-123",
    "234-234-234",
    "345-345-345",
  ]
}

Reference

λ°˜μ‘ν˜•

λŒ“κΈ€