Skip to content

[5주차 트러블 슈팅] 이준복 ‐ 백엔드 지식의 중요성

junbok97 edited this page Dec 14, 2023 · 1 revision

🖼️ 배경

  • username중복 체크를 위한 API를 사용하다 발생한 문제

🫠 트러블

  • swagger에 나와있는 스팩대로 시뮬레이터에서 API를 사용했는데 동작하지 않음
    • API 문서 스팩은 http메소드가 get이고 get의 바디에 json 형태로 username을 받고 있었음
      { "username" : string }
  • postman에선 잘 동작함

🏃🏻 시도했던 방법

  • 클라이언트 코드가 잘못되었는지 디버깅

    • 서버에 요청하기 전에 터지는 것인지 체크하기 위해 한줄한줄 디버깅
    • 인코딩도 정상적으로 이루어지고 서버와 통신하기직전까지 코드가 잘 돌아가는것을 확인
    • 서버와 통신을 하면 서버측에서 받지 못하는 것을 발견
  • 헤더의 문제인가 ?

    • postman은 잘 되고 swift는 안되는 이유가 헤더에 정보를 다 싣지않아서 그런것인가 하여 확인
    • swift에서 postman과 동일하게 헤더를 싣고있는것을 확인
  • wireshark로 잡아보기

    • postman에선 API 스팩대로 잘 동작하는것을 확인
    • swift에서도 API 스팩대로 코드를 작성하였는데 서버에서 데이터를 받지 못하는것을 확인
    • wireshark로 잡아보기로 결정
    • wireshark로 잡아본 결과 swift코드에서도 문제가 없는것을 발견
    • 서버쪽에서 받기직전 또는 받은 직후에 문제가 생기는것 같다고 판단 백엔드 분과 디버깅

✅ 솔루션

  • get요청에서 파라미터로 username을 받는것으로 변경
    • post요청으로 body를 보내는것은 문제가 안됨
    • get은 많은 양의 정보를 전달할 수 없어 원래는 body를 못 싣게 되었으나 2014년부터는 body가 혀용되었음
    • 하지만 일부 클라이언트 혹은 서버에선 get요청으로 올시 body를 무시되는 경우가 있어서 주의가 필요하다라고 되어있음
    • 서버측이 get요청의 body말고 parameter로 받으니 정상작동
    • get은 parameter post는 body라는 기본적인 지식을 생각못하여 발생한 헤프닝이였다 ,,,,
    • 서버측과 클라이언트 모두 당연한 생각을 하지 못하여 한참동안 어디가 문제인지 고민했다 ,,,,,,,

🔗 참고자료

🔥 HeatPick

🔨 프로젝트 소개

🫠 트러블 슈팅

1주차

2주차

3주차

4주차

5주차

🤔 기획 회의록

🤷🏻 의사 결정록

🍎 iOS

🌐 Backend

🎯 주차별 목표

🏃🏻 데일리 스크럼

1주차

2주차

3주차

4주차

5주차

6주차

🙇🏻 멘토링 일지

👀 프로젝트 현황 공유

🙋🏻 팀 회고

💪 개인 회고

1주차

2주차

3주차

4주차

5주차

📇 템플릿

Clone this wiki locally