Apollo-link: apollo-link-http에 λŒ€ν•œ μ‹œκ°„ 초과 μ˜΅μ…˜ μΆ”κ°€

에 λ§Œλ“  2019λ…„ 02μ›” 20일  Β·  7μ½”λ©˜νŠΈ  Β·  좜처: apollographql/apollo-link

apollo-link-http μ˜΅μ…˜μ— λ°€λ¦¬μ΄ˆ μ‹œκ°„ 초과 값을 포함할 수 있으면 맀우 μ’‹μŠ΅λ‹ˆλ‹€.

ν˜„μž¬ 진행 쀑인 κ°€μ Έμ˜€κΈ°λ₯Ό 쀑단할 수 없더라도 λͺ¨λ“  μ‚¬λžŒμ΄ μžμ‹ μ˜ μ†”λ£¨μ…˜μ„ 둀링할 ν•„μš”κ°€ 없도둝 맀우 μœ μš©ν•©λ‹ˆλ‹€.

https://stackoverflow.com/questions/40837676/apolloclient-timeout-best-option
https://stackoverflow.com/questions/47198402/how-to-set-a-timeout-on-a-request-with-apollo-client

feature

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

μ•ˆλ…•ν•˜μ„Έμš” Apollo νŒ€, apollo graphql ν΄λΌμ΄μ–ΈνŠΈ κ΅¬ν˜„μ—μ„œ 기본적으둜 μ§€μ›λ˜λŠ” νƒ€μž„μ•„μ›ƒ μ˜΅μ…˜μ„ κ°–λŠ” 것은 맀우 μœ μš©ν•©λ‹ˆλ‹€. 이것은 ν΄λΌμ΄μ–ΈνŠΈ μš”μ²­κ³Ό λ°€μ ‘ν•˜κ²Œ μ—°κ²°λ˜μ–΄ μžˆμœΌλ―€λ‘œ μ‹œκ°„ 초과λ₯Ό μš”μ²­ν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€.
이 κΈ°λŠ₯을 이미 κ³„νšν•˜κ³  μžˆμŠ΅λ‹ˆκΉŒ? 이 μš”μ²­μ— λŒ€ν•œ κ·€ν•˜μ˜ ν˜„μž¬ μž…μž₯은 λ¬΄μ—‡μž…λ‹ˆκΉŒ?

κ·€ν•˜μ˜ μ˜κ²¬μ„ κΈ°λ‹€λ¦¬κ² μŠ΅λ‹ˆλ‹€.

감사 ν•΄μš”
μ•„λΌλΉˆλ“œ

λͺ¨λ“  7 λŒ“κΈ€

예, ν•„μš”ν•œ 경우 κ°€μ Έμ˜€κΈ°λ₯Ό λž˜ν•‘ν•˜κ³  μš”μ²­ μ‹œκ°„μ„ μ΄ˆκ³Όν•  수 μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€.

μ‚¬λžŒλ“€μ΄ μ‹œκ°„ μ΄ˆκ³Όκ°€ μ•„λ‹Œ 버전에 μ˜μ‘΄ν•˜λŠ” 경우 이 λ™μž‘μ„ μˆ˜ν–‰ν•˜μ§€ μ•Šλ„λ‘ μ˜΅νŠΈμ•„μ›ƒμ„ μ œκ³΅ν•΄μ•Ό ν•©λ‹ˆλ‹€.

μ·¨μ†Œ μžμ²΄μ— abortConttollerλ₯Ό μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

생각? @h윌슨

@dshook @JoviDeCroock 당신이 μ •λ§λ‘œ μ›ν•˜λŠ” 것은 νƒ€μž„μ•„μ›ƒ 링크라고 μƒκ°ν•©λ‹ˆλ‹€. μ•„λ§ˆλ„ ν˜ΈμΆœμžκ°€ 응닡을 κΈ°λ‹€λ €μ•Ό ν•˜λŠ” μ‹œκ°„μ„ μ œν•œν•˜κ³  κ·Έ μ‹œκ°„μ— 응닡이 λŒμ•„μ˜€μ§€ μ•ŠμœΌλ©΄ 였λ₯˜λ₯Ό λ°˜ν™˜ν•˜κ³  싢을 κ²ƒμž…λ‹ˆλ‹€. λ§žμŠ΅λ‹ˆκΉŒ? κ·Έλ ‡λ‹€λ©΄ http 링크 μžμ²΄μ— 넣어도 λ‹€λ₯Έ 링크와 ꡬ성할 수 μ—†μŠ΅λ‹ˆλ‹€. κ·€ν•˜μ˜ μΏΌλ¦¬λŠ” λŒ€κΈ° μ€‘μ΄κ±°λ‚˜ λ‹€λ₯Έ λ§ν¬μ—μ„œλ„ λ©ˆμ·„μ„ 수 μžˆμŠ΅λ‹ˆλ‹€. μ‹€μ œλ‘œ μž¬μ‹œλ„ 링크일 ν•„μš”λŠ” μ—†μŠ΅λ‹ˆλ‹€. apollo-link-retry, apollo-link-serialize, apollo-link-queue 등에 μžˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€. νŠΉμ • νƒ€μž„μ•„μ›ƒμ„ 보μž₯ν•˜κΈ° μœ„ν•΄ μ •λ§λ‘œ ν•„μš”ν•œ 것은 μŠ€νƒμ˜ 맨 μœ„μ— μžˆλŠ” νƒ€μž„μ•„μ›ƒ λ§ν¬μž…λ‹ˆλ‹€. μŠ€νƒμ—μ„œ μš”μ²­μ΄ 보λ₯˜ 쀑인 μœ„μΉ˜μ— 관계없이 λ„ˆλ¬΄ 였래 κ±Έλ¦¬λŠ” out μš”μ²­(μ·¨μ†Œ 및 였λ₯˜ λ°˜ν™˜).

μ§€μ ν–ˆλ“―μ΄ μ‹œκ°„ 초과 ν›„ μš”μ²­μ„ μ·¨μ†Œν•œλ‹€κ³  ν•΄μ„œ μ„œλ²„κ°€ μš”μ²­μ„ 보지 λͺ»ν–ˆλ‹€λŠ” 보μž₯은 μ—†μœΌλ―€λ‘œ 멱등성이 μ•„λ‹Œ λ³€ν˜•μ— μ£Όμ˜ν•˜μ‹­μ‹œμ˜€.

μΆ”μ‹ : λˆ„κ΅°κ°€ 이미 νƒ€μž„μ•„μ›ƒ 링크λ₯Ό λ§Œλ“  것 κ°™μŠ΅λ‹ˆλ‹€(apollo-link-timeout). λΆˆν–‰νžˆλ„ 이것은 맀우 μœ μ—°ν•˜μ§€ μ•Šκ³  링크 좔상화λ₯Ό κΉ¨κ³ (예: μš”μ²­μ„ μ€‘λ‹¨ν•˜κΈ° μœ„ν•΄ 페치 링크에 λ„λ‹¬ν•˜κ³  μ–΄λ””μ—μ„œλ‚˜ ν˜ΈμΆœν•  수 μžˆλŠ” timeoutRef λ°˜ν™˜) 잘 ν…ŒμŠ€νŠΈλ˜μ§€ μ•Šμ€ κ²ƒμœΌλ‘œ 보이며 λͺ‡ 가지 μ˜μ‹¬μŠ€λŸ¬μš΄ 점이 μžˆμŠ΅λ‹ˆλ‹€. κΈ°λ³Έκ°’(μ‹œκ°„ 초과 μ—†μŒ λŒ€μ‹  15초 μ‹œκ°„ 초과)이며 맀우 μœ μ—°ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€(예: μ‹œκ°„ μ΄ˆκ³ΌλŠ” 쿼리 λ³€μˆ˜μ— μ˜μ‘΄ν•  수 μ—†μŒ). κ·ΈλŸ¬λ‚˜ μ•„λ§ˆλ„ 당신을 μœ„ν•΄ νŠΈλ¦­μ„ μˆ˜ν–‰ν•  κ²ƒμž…λ‹ˆλ‹€.

λ‚˜λŠ” 이것이 ꡉμž₯ν•  κ²ƒμ΄λΌλŠ” 데 λ™μ˜ν•˜μ§€λ§Œ Fetch API에 μ‹œκ°„ 초과 λ©”μ»€λ‹ˆμ¦˜μ΄ μ—†λ‹€λŠ” 것을 μ΄ν•΄ν•˜λ―€λ‘œ Fetchκ°€ λ‚΄λΆ€μ μœΌλ‘œ μ‚¬μš©λ˜λŠ”μ§€ λ˜λŠ” 일반 μ•½μ†λ§Œ μ‚¬μš©λ˜λŠ”μ§€ ν™•μ‹€ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

apollo-link-timeout 은 @helper κ°€ μ–ΈκΈ‰ν•œ κ²ƒμ²˜λŸΌ μœ μ—°ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. timeout 값은 동적이어야 ν•œλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€. μ‹œκ°„ 초과λ₯Ό κ°€μž₯ 쒋은 λ°©λ²•μœΌλ‘œ μ²˜λ¦¬ν•˜λ €λ©΄ μ–΄λ–»κ²Œ ν•΄μ•Ό ν•©λ‹ˆκΉŒ? 🀣

_ 예제 쿼리 _

<Query
  query={FETCH_QUERY}
  context={{ timeout: 5000 }}
>...</Query>

μ—¬κΈ°μ—μ„œ 후속 쑰치λ₯Ό μ·¨ν•˜κ³  μ‹ΆμŠ΅λ‹ˆλ‹€. 수용 κ°€λŠ₯ν•œ ν˜„μž¬ μ†”λ£¨μ…˜μ€ λ¬΄μ—‡μž…λ‹ˆκΉŒ? 그리고 이것은 μ‹€μ œ μ‹œλ‚˜λ¦¬μ˜€λ₯Ό λ‚˜νƒ€λ‚΄λ©° νƒ€μž„μ•„μ›ƒμ— λŒ€ν•œ μ •λ‹Ήν•œ μš”μ²­μ²˜λŸΌ λ³΄μž…λ‹ˆλ‹€.

μ•ˆλ…•ν•˜μ„Έμš” Apollo νŒ€, apollo graphql ν΄λΌμ΄μ–ΈνŠΈ κ΅¬ν˜„μ—μ„œ 기본적으둜 μ§€μ›λ˜λŠ” νƒ€μž„μ•„μ›ƒ μ˜΅μ…˜μ„ κ°–λŠ” 것은 맀우 μœ μš©ν•©λ‹ˆλ‹€. 이것은 ν΄λΌμ΄μ–ΈνŠΈ μš”μ²­κ³Ό λ°€μ ‘ν•˜κ²Œ μ—°κ²°λ˜μ–΄ μžˆμœΌλ―€λ‘œ μ‹œκ°„ 초과λ₯Ό μš”μ²­ν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€.
이 κΈ°λŠ₯을 이미 κ³„νšν•˜κ³  μžˆμŠ΅λ‹ˆκΉŒ? 이 μš”μ²­μ— λŒ€ν•œ κ·€ν•˜μ˜ ν˜„μž¬ μž…μž₯은 λ¬΄μ—‡μž…λ‹ˆκΉŒ?

κ·€ν•˜μ˜ μ˜κ²¬μ„ κΈ°λ‹€λ¦¬κ² μŠ΅λ‹ˆλ‹€.

감사 ν•΄μš”
μ•„λΌλΉˆλ“œ

이 κΈ°λŠ₯이 아직 μž‘λ™ μ€‘μΈκ°€μš”? μ‚¬μš© κ°€λŠ₯ν•œ 경우 μ‹œκ°„ 초과 μ˜΅μ…˜μ˜ 이점을 λˆ„λ¦΄ 수 μžˆμŠ΅λ‹ˆλ‹€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰