응답관리 인코딩 설명 추가
This commit is contained in:
@@ -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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user