[Python] TypeError: A Bytes-Like Object Is Required, Not ‘Str’

마이구미·2022년 6월 1일
0

다시 볼 것

목록 보기
6/6

상황

파이썬으로 api 호출을 할 때 헤더나 바디에 base64인코딩을 하여 전달하거나 받는 경우가 있었다. 당시에는 상대 측의 api 가 해결되지 않아 단순히 아래와 같은 느낌으로만 코드를 작성해 두었다.

name = 'my_gummy'
encoded_name = base64encode(name)

후에 클라이언트와의 테스트를 위해 실제로 동작시켰을 때 에러가 발생했다.

해결

에러 내용을 보면 str이 아니라 byte-like 객체가 필요하다는 것이다. 단순히 파라미터의 타입을 잘못 넣어 준 것이다. bytes와 str은 다음과 같은 관계에 있다.

  • str –> 디코딩 –> bytes
  • bytes –> 인코딩 –> str

따라서 아래와 같이 수정해주면 해결된다.

name = 'my_gummy'
name = name.decode('utf-8')  # 추가
encoded_name = base64encode(name)

에러메세지에 bytes라는 단어가 보이면 대부분 문자열 인코딩, 디코딩과 관련이 있을 것이라고 생각하고 접근하면 될 것 같다.

profile
마이구미 마시쪙

0개의 댓글