프로젝트를 새로 시작하게 되었는데, 서로 코드 리뷰를 하던 도중 오랜만에 application/json를 Content-Type으로 붙인 것을 발견하여 정리하게 되었습니다.
Content-Type
HTTP Content Type, 또는 MIME 타입은 HTTP 헤더에서 사용되는 문자열로, 통신하는 상대방에게 데이터의 형식을 알려주는 역할을 합니다.
안드로이드 개발을 막 시작했던 초반에는 해당 content-type을 항상 header에 붙였습니다.
@Header("Content-Type") contentTypeHeader: String = "application/json"
Retrofit을 사용하고 있다면, header에 "application/json"은 붙이지 않아도 됩니다.
Retrofit.Builder()
.client(okHttpClient)
.baseUrl("https://")
.addConverterFactory(GsonConverterFactory.create())
.build()
.create(ApiService::class.java)
GsonConverterFactory을 넣어서 JSON 형식의 @Body 데이터에 대해 자동으로 Content-Type: application/json 을 설정합니다. 따라서 대부분의 경우에는 이를 명시적으로 설정할 필요가 없습니다.
또한 @GET 어노테이션으로 표시된 메소드에서 Content-Type 헤더를 설정하는 것은 일반적으로 필요하지 않습니다. GET 요청은 서버로부터 데이터를 검색하는 데 사용되며, 보통 요청 본문을 포함하지 않습니다. Content-Type은 주로 요청 본문의 데이터 형식을 서버에 알려주는 데 사용되므로, 본문이 없는 GET 요청에서는 필요하지 않습니다.
대표적인 Content-Type의 종류
Content | TypeDescription |
text/html | HTML 문서를 나타냅니다. 대부분의 웹 페이지가 이 형식을 사용합니다. |
text/plain | 일반 텍스트를 나타냅니다. 어떠한 서식도 없는 순수 텍스트입니다. |
image/jpeg | JPEG 형식의 이미지를 나타냅니다. |
image/png | PNG 형식의 이미지를 나타냅니다. |
image/gif | GIF 형식의 이미지를 나타냅니다. |
application/json | JSON 형식의 데이터를 나타냅니다. 웹 API에서 많이 사용됩니다. |
application/javascript | JavaScript 코드를 나타냅니다. |
application/xml | XML 문서를 나타냅니다. RSS 피드 등에서 사용됩니다. |
application/pdf | PDF 문서를 나타냅니다. |
multipart/form-data | 파일 업로드와 같은 폼 데이터를 나타냅니다. |
더 많은 종류에 대해서는 다음 링크에서 확인할 수 있습니다.
https://www.iana.org/assignments/media-types/media-types.xhtml
'질문 정리' 카테고리의 다른 글
깔끔한 코드를 위해서 Ktlint 사용 (0) | 2024.01.30 |
---|---|
효율적인 로깅을 위한 LogUtils (1) | 2024.01.23 |
안드로이드 4대 컴포넌트 정리 (0) | 2023.09.27 |
네트워크 처리량과 병목현상 (0) | 2023.08.28 |
MVC, MVP, MVVM 패턴에 대한 정리 (1) | 2023.07.31 |