응답관리 인코딩 설명 추가

This commit is contained in:
Sungpil Hyun
2024-05-28 22:36:24 +09:00
parent 4a9de03096
commit 6069c9b3a3
2 changed files with 27 additions and 0 deletions
+23
View File
@@ -52,3 +52,26 @@ java -jar build/libs/elink-test-master.jar
4. path 값이 없이 요청이 가능합니다. 4. path 값이 없이 요청이 가능합니다.
## 응답 관리 캐릭터 인코딩
### 응답 바디의 인코딩 결정
응답 바디의 인코딩을 적용하는 순서와 우선순위를 설명합니다. 인코딩은 다음과 같은 순서로 결정됩니다:
1. matchingResponse에서 encodingCharset 확인
matchingResponse 객체의 encodingCharset이 비어 있지 않으면 해당 값을 사용합니다.
2. 시스템 속성 'file.encoding' 확인
matchingResponse 객체의 encodingCharset이 비어 있는 경우, 시스템의 기본 파일 인코딩을 사용합니다.
(System.getProperty("file.encoding"))
### 응답 CONTENT-TYPE 설정
1. CONTENT-TYPE 헤더가 없는 경우
위에서 결정된 인코딩 charset을 사용하여 text/plain으로 설정합니다.
2. 기존 CONTENT-TYPE에 charset이 없으면 charset 추가
CONTENT-TYPE 헤더가 존재하지만 charset이 지정되어 있지 않은 경우, 위에서 결정된 인코딩 charset을 기존 content-type에 추가합니다.
### 주의사항
동시에 matchingResponse에 encodingCharset을 지정하고, 응답 헤더의 Content-Type에도 charset을 지정하는 경우,
두개의 charset이 다르면, 응답 바디는 matchingResponse의 encodingCharset을 사용하여, 인코딩 됩니다.
@@ -77,6 +77,10 @@ public class MockApiController {
String contentType = responseHeaders.getFirst(HttpHeaders.CONTENT_TYPE); String contentType = responseHeaders.getFirst(HttpHeaders.CONTENT_TYPE);
if (!contentType.contains("charset")) { if (!contentType.contains("charset")) {
responseHeaders.set(HttpHeaders.CONTENT_TYPE, contentType + "; charset=" + encodingCharset); responseHeaders.set(HttpHeaders.CONTENT_TYPE, contentType + "; charset=" + encodingCharset);
} else {
if (!contentType.contains(encodingCharset)) {
logger.warn("Existing content type charset does not match the encodingCharset: " + encodingCharset);
}
} }
} }