Axios: λ•Œλ•Œλ‘œ response.dataλŠ” 객체 λŒ€μ‹  λ¬Έμžμ—΄μž…λ‹ˆλ‹€.

에 λ§Œλ“  2018λ…„ 08μ›” 13일  Β·  43μ½”λ©˜νŠΈ  Β·  좜처: axios/axios

μ΄μœ λŠ” λͺ¨λ₯΄κ² μ§€λ§Œ λ™μΌν•œ APIλ₯Ό μ‚¬μš©ν•˜λ©΄ λ•Œλ•Œλ‘œ axios의 response.dataκ°€ 객체 λŒ€μ‹  λ¬Έμžμ—΄μž…λ‹ˆλ‹€. μ•„λž˜ 그림을 μ°Έμ‘°ν•˜μ‹­μ‹œμ˜€.

image

λ¬Έλ§₯

  • μ•‘μ‹œμ˜€μŠ€ 버전: 0.18.0
  • ν™˜κ²½: React λ„€μ΄ν‹°λΈŒ Expo SDK 29, μ°½ 10

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

μ„œλ²„μ˜ json 응닡이 μœ νš¨ν•˜μ§€ μ•Šμ„ λ•Œ 이런 일이 λ°œμƒν•œλ‹€λŠ” 것을 λ°œκ²¬ν–ˆμŠ΅λ‹ˆλ‹€. https://jsonlint.com/ κ³Ό 같은 json μœ νš¨μ„± 검사기λ₯Ό μ‚¬μš©ν•˜μ—¬ json ν˜•μ‹μ΄ μ˜¬λ°”λ₯Έμ§€ ν™•μΈν•˜μ‹­μ‹œμ˜€.

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

@huy-lv,

content-type λŠ” 두 응닡 λͺ¨λ‘ λ™μΌν•©λ‹ˆκΉŒ?

@robmcguinness λ„€, application/jsonμž…λ‹ˆλ‹€

λ‚˜λŠ” 같은 행동을 λ³Έλ‹€. 제 κ²½μš°μ—λŠ” API 응닡에 잘λͺ»λœ JSON 데이터가 ν¬ν•¨λ˜λŠ” κ²½μš°κ°€ μžˆμŠ΅λ‹ˆλ‹€. 즉, JSON.parse κ°€ λ°œμƒν•©λ‹ˆλ‹€. μ–΄λ–€ 이유둜 AxiosλŠ” 이 였λ₯˜λ₯Ό μ‚Όν‚€κ³  data 속성에 잘λͺ»λœ JSON λ¬Έμžμ—΄μ„ μ„€μ •ν•˜κ²Œ λ©λ‹ˆλ‹€.

λ‚˜λ„μ΄ λ¬Έμ œκ°€μžˆλ‹€. response.data 문제 사둀λ₯Ό 확인할 λ•Œ " 데이터와 같은 일뢀 잘λͺ»λœ JSON λ¬Έμžμ—΄μ΄ 응닡에 μΆ”κ°€λ˜μ–΄ JSON.parse에 였λ₯˜κ°€ λ°œμƒν•˜κ³  λ¬Έμžμ—΄μ„ λ°˜ν™˜ν•©λ‹ˆλ‹€.

Axios, XMLHttpRequest, fetch둜 ν™•μΈν–ˆμŠ΅λ‹ˆλ‹€.
1./ Axios와 XMLHttpRequest에 같은 λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€.
2./ μž‘μ—…μ„ μ™„λ²½ν•˜κ²Œ κ°€μ Έμ˜΅λ‹ˆλ‹€.

일뢀 λ¬Έμžκ°€ κ·Έ 문제둜 μ΄μ–΄μ§ˆ 수 μžˆλ‹€λŠ” 것을 μ•Œκ³  μžˆμŠ΅λ‹ˆλ‹€. ν™•μ‹€νžˆ ν•΄μ•Ό ν•©λ‹ˆλ‹€.
응닡을 μΊ‘μ²˜ν•˜μ—¬ 파일둜 첨뢀할 수 μžˆμŠ΅λ‹ˆκΉŒ?

@OpenGG 닡변이 λŠ¦μ–΄ μ£„μ†‘ν•©λ‹ˆλ‹€. 여기에 ν•„μš”ν•œ 것 :D
https://1drv.ms/t/s!AnakDtCf8CG5hIgn2Hemy6zanFi50Q

@huy-lv λ‚΄κ°€ κΈ°λŒ€ν•˜λŠ” 것이 μ•„λ‹™λ‹ˆλ‹€. curl둜 닡변을 μ €μž₯ν•˜μ‹  ν›„, μ €μž₯ν•œ νŒŒμΌμ„ 이 이슈의 λ‹΅λ³€λž€μ— λ“œλ‘­ν•˜μ—¬ μ²¨λΆ€ν•΄μ£Όμ„Έμš”.

@huy-lv

신경쓰지 λ§ˆμ„Έμš”, μ°Ύμ•˜μŠ΅λ‹ˆλ‹€.
μš”μ μ— λΆ™μ—¬λ„£κ³  axios둜 λ‘œλ“œλ₯Ό μ‹œλ„ν–ˆμ§€λ§Œ 였λ₯˜κ°€ ν‘œμ‹œλ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

파일: https://gist.github.com/OpenGG/ac72e79f9ef088e993213473116c0cd0
데λͺ¨: https://codepen.io/OpenGG/pen/bxEqKL

λ‚˜λŠ”μ΄ λ¬Έμ œκ°€ 항상 λ°œμƒν•˜μ§€ μ•ŠλŠ”λ‹€λŠ” 것을 μ•Œκ³  μžˆμŠ΅λ‹ˆλ‹€. 각 10 μš”μ²­λ§ˆλ‹€ μ•½ 1-2 λ²ˆμž…λ‹ˆλ‹€ (λ™μΌν•œ API, λ™μΌν•œ 응닡)

@OpenGG React-Nativeμ—μ„œ λ°œμƒν•©λ‹ˆλ‹€. μ›Ή 앱은 μ™„λ²½ν•˜κ²Œ μž‘λ™ν•©λ‹ˆλ‹€.

@nighttiger1990

μ—‘μŠ€ν¬μ—μ„œ 온라인 데λͺ¨λ₯Ό λ§Œλ“€κ³  κ³΅μœ ν•  수 μžˆμŠ΅λ‹ˆκΉŒ? 이 데λͺ¨λŠ” Axios λ˜λŠ” RN이 이 문제λ₯Ό μΌμœΌν‚€λŠ”μ§€ μ—¬λΆ€λ₯Ό ν™•μΈν•˜κΈ° μœ„ν•΄ Axios 및 XMLHttpRequest에 λŒ€ν•΄ λ™μΌν•œ μš”μ²­μ„ μˆ˜ν–‰ν•΄μ•Ό ν•©λ‹ˆλ‹€.

@OpenGG 메일을 μ£Όμ‹€ 수
https://github.com/nighttiger1990/axiosBug.git

이 λ¬Έμ œμ— ν–‰μš΄μ΄ μžˆμŠ΅λ‹ˆκΉŒ? λ‚˜λ„ μ§λ©΄ν•œλ‹€

@DruthiλŠ” 이제 '

λͺ¨λ“  μ—…λ°μ΄νŠΈ?

이것은 κ·€ν•˜μ˜ κ²½μš°κ°€ 아닐 μˆ˜λ„ μžˆμ§€λ§Œ 제 κ²½μš°μ—λŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.
λ‚΄ API 응닡 λ¬Έμžμ—΄μ€ μœ νš¨ν•œ JSON이 μ•„λ‹ˆλ―€λ‘œ axiosλŠ” JSON으둜 ꡬ문 뢄석할 수 μ—†μœΌλ©° λŒ€μ‹  μ›μ‹œ λ¬Έμžμ—΄μ„ λ°˜ν™˜ν•©λ‹ˆλ‹€.

λ‚΄ μ•±(redux-saga,axios)을 webpack4둜 λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ν–ˆμœΌλ©° 이제 response.dataλŠ” 객체 λŒ€μ‹  λ¬Έμžμ—΄μž…λ‹ˆλ‹€. λ‚΄κ°€ λ§Œλ“  λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ λ³€κ²½ 사항은 μ„±κ³΅μ μœΌλ‘œ μ»΄νŒŒμΌν•˜κΈ° μœ„ν•΄ μ΅œμ†Œν™”λ©λ‹ˆλ‹€.
νŒ¨ν‚€μ§€.json
"μ›ΉνŒ©": "^4.29.6",
"webpack-cli": "^3.3.0",
"webpack-dev-middleware": "^3.6.1",
"webpack-dev-server": "^3.2.1"
"파일 λ‘œλ”": "^3.0.1",

webpack-config.js
μΆ”κ°€ λͺ¨λ“œ: module.exports에 '개발'
주석 처리된 색상: true, devServerμ—μ„œ
json-loader 주석 처리

JSON.parse(response.data)λ₯Ό μ‹€ν–‰ν–ˆλŠ”λ° JSON이 μ†μƒλ˜μ—ˆμŠ΅λ‹ˆλ‹€. (예기치 μ•Šμ€ 토큰: JSON μœ„μΉ˜ 8181)

            "municipality": "ddrNote": ""      should be

            "municipality": "",
            "addrNote": ""

response.data의 JSON이 OK(객체)인 λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ μ „ webpack3 μ½”λ“œμ™€ λΉ„κ΅ν–ˆμŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ λ§ˆμ΄κ·Έλ ˆμ΄μ…˜λœ μ½”λ“œλŠ” response.dataμ—μ„œ JSON을 μ†μƒμ‹œν‚€λ„λ‘ κ΄€λ¦¬ν•˜κ³  있으며 이것이 λ¬Έμžμ—΄λ‘œ λ‚˜νƒ€λ‚˜λŠ” μ΄μœ μž…λ‹ˆλ‹€. 이제 μ§ˆλ¬Έμ€ JSON이 μ†μƒλœ μ΄μœ μž…λ‹ˆλ‹€.

"webpack-dev-server": "3.1.10"으둜 λ‹€μš΄κ·Έλ ˆμ΄λ“œν•˜μ—¬ 문제λ₯Ό ν•΄κ²°ν–ˆμŠ΅λ‹ˆλ‹€.

3.1.10 μ΄μƒμ˜ 버전에 λŒ€ν•œ 응닡 μ†μƒμ˜ 원인인 devServer ν”„λ‘μ‹œκ°€ μžˆμŠ΅λ‹ˆλ‹€.

@petercutting ν”„λ‘œλ•μ…˜ ν™˜κ²½μ—μ„œλ„ λ¬Έμ œκ°€ λ˜λŠ” 것, κ΄€μ°°ν•˜μ§€ λͺ»ν•˜μ…¨λ‚˜μš”?

@nyilmaz λ‚΄ λ¬Έμ œλŠ” webpack-dev-server둜 인해 λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€. webpack-dev-serverλŠ” ν”„λ‘œλ•μ…˜ ν™˜κ²½μ—μ„œ μ‚¬μš©λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

@petercutting webpack-dev-server에 λŒ€ν•œ 문제λ₯Ό μ—΄μ—ˆμŠ΅λ‹ˆκΉŒ? λ‚˜λŠ” 찾을 수 μ—†μ—ˆλ‹€.

@goodmorninggoaway 기얡이 μ•ˆλ‚˜

webpack-dev-server λ¬Έμ œμ™€ 상관없이 AxiosλŠ” JSON.parse μ˜ˆμ™Έλ₯Ό 쑰용히 μ‚ΌμΌœμ„œλŠ” μ•ˆ λ©λ‹ˆλ‹€. 맞죠?

λ°±μ—”λ“œμ—μ„œ 잘λͺ»λœ ν˜•μ‹μ˜ JSON을 μ „μ†‘ν•˜μ—¬ μ•±μ˜ 견고성을 ν…ŒμŠ€νŠΈν•˜κ³  μžˆμ—ˆμŠ΅λ‹ˆλ‹€. Axios μš”μ²­μ€ JSON 디코딩에 μžλ™μœΌλ‘œ μ‹€νŒ¨ν•©λ‹ˆλ‹€. content-type ν—€λ”λŠ” μ—¬μ „νžˆ "application/json" λ˜μ–΄ μžˆμ§€λ§Œ response.data λŠ” νŒŒμ‹±λ˜μ§€ μ•Šμ€ μ›μ‹œ λ¬Έμžμ—΄μ΄κ³  후속 쑰치둜 λ‚΄ 앱이 예기치 μ•Šκ²Œ μΆ©λŒν•©λ‹ˆλ‹€.

별이 60,000개 μžˆλŠ” λΌμ΄λΈŒλŸ¬λ¦¬μ— λ°˜λ…„ λ™μ•ˆ 그런 κΈ°λ³Έ 버그가 μžˆλ‹€λŠ” 것은 정말 미친 μ§“μž…λ‹ˆλ‹€.

webpack-dev-server λ¬Έμ œμ™€ 상관없이 AxiosλŠ” JSON.parse μ˜ˆμ™Έλ₯Ό 쑰용히 μ‚ΌμΌœμ„œλŠ” μ•ˆ λ©λ‹ˆλ‹€. 맞죠?

μ™„μ „νžˆ 유효

λ°˜μ‘ λ„€μ΄ν‹°λΈŒμ— λŒ€ν•œ 이 버그에 λŒ€ν•œ μ—…λ°μ΄νŠΈκ°€ μžˆμŠ΅λ‹ˆκΉŒ!?

μ„œλ²„μ˜ json 응닡이 μœ νš¨ν•˜μ§€ μ•Šμ„ λ•Œ 이런 일이 λ°œμƒν•œλ‹€λŠ” 것을 λ°œκ²¬ν–ˆμŠ΅λ‹ˆλ‹€. https://jsonlint.com/ κ³Ό 같은 json μœ νš¨μ„± 검사기λ₯Ό μ‚¬μš©ν•˜μ—¬ json ν˜•μ‹μ΄ μ˜¬λ°”λ₯Έμ§€ ν™•μΈν•˜μ‹­μ‹œμ˜€.

였λ₯˜ μ‚Όν‚€λŠ” λ¬Έμ œκ°€ μΆ”μ λ˜κ³  μžˆμŠ΅λ‹ˆλ‹€. 본질적으둜 μ€‘λ³΅λ˜λŠ” λ¬Έμ œμ΄λ―€λ‘œ 이 문제λ₯Ό μ’…λ£Œν•˜κ² μŠ΅λ‹ˆλ‹€.

질문이 μžˆλŠ” 경우 λ¬Έμ˜ν•˜μ„Έμš”.

@fed135 κ΄€λ ¨ λ¬Έμ œκ°€ 있으면 링크해 μ£Όμ„Έμš”. κ°μ‚¬ν•©λ‹ˆλ‹€.

아직 ν•΄κ²°ν•œ μ‚¬λžŒμ΄ μžˆλ‚˜μš”?, μ €λŠ” laravel을 API둜 μ‚¬μš©ν•˜κ³  μžˆμœΌλ―€λ‘œ 응닡을 λ‚΄ 앱에 보내기 전에 κΈ°λ‘ν–ˆμŠ΅λ‹ˆλ‹€. 기둝된 응닡은 μœ νš¨ν•œ JSONμ΄μ§€λ§Œ μˆ˜μ‹ λœ μ‘λ‹΅μ˜ 끝에 λ§ˆμ§€λ§‰ "}" μ€‘κ΄„ν˜Έκ°€ λˆ„λ½λ˜μ–΄ 잘λͺ»λœ 응닡이 λ©λ‹ˆλ‹€. 이것이 λ‚΄ λͺ¨λ°”일 μ•±μ—μ„œ μ™œ 이런 μ‹μœΌλ‘œ μž‘λ™ν•˜λŠ”μ§€ λͺ¨λ₯΄κ² μŠ΅λ‹ˆλ‹€. axiosλ₯Ό μ‚¬μš©ν•˜λŠ” ν”„λ‘ νŠΈ μ—”λ“œ 앱도 μ œλŒ€λ‘œ μž‘λ™ν•˜κ³  우편 λ°°λ‹¬λΆ€μ—μ„œλ„ μ‹œλ„ν–ˆμ§€λ§Œ 잘 μž‘λ™ν•©λ‹ˆλ‹€. μ–΄λ–€ 아이디어 λ˜λŠ” μ†”λ£¨μ…˜ pls??

데이터가 λ„ˆλ¬΄ 컀질 λ•Œ λ°œμƒν•©λ‹ˆλ‹€ :( 데이터 배열이 μž‘κΈ° λ•Œλ¬Έμ— λ¬Έμ œκ°€ μ—†μ—ˆμŠ΅λ‹ˆλ‹€!

@matinzd λ‚΄ 데이터에 νŽ˜μ΄μ§€λ₯Ό 맀기고 20개만 λ°˜ν™˜ν•©λ‹ˆλ‹€.

@matinzd 및 λ˜ν•œ λ‚΄ fronend 앱은 λ™μΌν•œ 끝점을 μ‚¬μš©ν•˜λ©° λ°˜μ‘ λ„€μ΄ν‹°λΈŒκ°€ μžˆλŠ” λͺ¨λ°”일 μ•±λ§Œ λ•Œλ•Œλ‘œ κ²½ν—˜ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

@fed135 후속 쑰치둜 μΆ”μ ν•˜κΈ°μ— μ ν•©ν•œ λ¬Έμ œμž…λ‹ˆκΉŒ? #61

λ‚΄ laravel APIκ°€ ν•¨κ»˜ λ¬Έμžμ—΄λ‘œ λ‚˜μ˜΅λ‹ˆλ‹€.

λ§ˆμΉ¨λ‚΄ λ‚΄ 해결책을 μ°Ύμ•˜μŠ΅λ‹ˆλ‹€.
λ‚΄κ°€ 얻은 λ°μ΄ν„°λŠ” ===

λ‚˜λŠ” 같은 였λ₯˜κ°€μžˆλ‹€
:(

λ™μΌν•œ λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€. jsonlint.comμ—μ„œ ν™•μΈν•œ ν›„ json이 μ•„λž˜μ™€ 같이 ꡬ문 뢄석할 수 μ—†λŠ” NaN 의 데이터가 μžˆμŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ λ°±μ—”λ“œκ°€ μœ νš¨ν•œ JSON 데이터λ₯Ό μ „μ†‘ν–ˆλŠ”μ§€ 확인해야 ν•©λ‹ˆλ‹€.

Error: Parse error on line 186:
...,    "position_name": NaN,   "group_name": 
----------------------^
Expecting 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '{', '[', got 'undefined'

같은 였λ₯˜, λˆ„κ°€ κ³ μΉ  수 μžˆμŠ΅λ‹ˆκΉŒ?

☝️ 이 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ λΉ λ₯Έ PR을 ν–ˆμŠ΅λ‹ˆλ‹€. 도움이 되기λ₯Ό λ°”λžλ‹ˆλ‹€.

axios 0.19.2λ₯Ό μ‚¬μš©ν•˜μ—¬ λ°˜μ‘ λ„€μ΄ν‹°λΈŒμ—μ„œ 이 문제 κ°€μ Έμ˜€κΈ°
λ¬Έμ œμ— λŒ€ν•œ μ—…λ°μ΄νŠΈκ°€ μžˆμŠ΅λ‹ˆκΉŒ?

λ‚˜λŠ”μ΄ λ™μΌν•œ λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€. λ‚˜λŠ”μ΄ 문제λ₯Ό ν•΄κ²°ν–ˆμŠ΅λ‹ˆλ‹€ axios의 방법을 λ³€κ²½ν•˜μ‹­μ‹œμ˜€. 'GET'λ©”μ†Œλ“œκ°€μžˆλŠ” 경우이 문제λ₯Ό 얻을 수 있기 λ•Œλ¬Έμ— 본문을 보낼 수 μ—†μŠ΅λ‹ˆλ‹€.이 문제λ₯Ό ν•΄κ²°ν•˜λ €λ©΄ 'POST'둜 λ³€κ²½ν•΄μ•Όν•©λ‹ˆλ‹€. μΌν•˜λ‹€

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