728x90
- AJAX 요청에 공통 경로(context path) 자동 추가하기
AJAX 요청 시 매번 URL 앞에 같은 공통 경로(contextPath)를 붙이는 게 번거롭다면, jQuery의 전역 설정 기능을 활용해 자동화할 수 있다.
1. ajaxPrefilter 사용 (전역 인터셉터)
모든 AJAX 요청 전에 URL을 전처리할 수 있는 기능이다. contextPath가 포함되지 않은 경우에만 자동으로 붙인다.
$.ajaxPrefilter(function(options, originalOptions, jqXHR) {
const contextPath = "/test";
if (!options.url.startsWith(contextPath)) {
options.url = contextPath + options.url;
}
});
- 장점: 모든 요청에 일괄 적용
- 주의: CDN이나 외부 도메인 URL에는 영향을 줄 수 있으니 조건 확인 필수
2. beforeSend 사용 (개별 요청 제어)
각 AJAX 요청마다 beforeSend를 사용해 세밀하게 URL을 수정할 수 있다.
$.ajax({
url: "/getCommonCodeListByGroupCode",
type: "POST",
data: { groupCode: "LOCATION" },
dataType: "json",
beforeSend: function(jqXHR, settings) {
const contextPath = "/test";
if (!settings.url.startsWith(contextPath)) {
settings.url = contextPath + settings.url;
}
},
success: function(data) {
console.log(data);
}
});
- 장점: 요청마다 다른 처리 가능
- 단점: 코드 반복 발생
3. $.ajaxSetup() 사용 (기본 설정 지정)
$.ajaxSetup({
beforeSend: function(jqXHR, settings) {
const contextPath = "/test";
if (!settings.url.startsWith(contextPath)) {
settings.url = contextPath + settings.url;
}
}
});
- 장점: 일괄 적용 + 코드 간결
- 단점: 전역 설정으로 인해 예외 상황 발생 시 조정 필요
- 결론
- ajaxPrefilter는 모든 AJAX 요청에 공통적으로 URL 앞에 contextPath를 추가할 수 있는 방법
- beforeSend는 각 AJAX 요청에 대해 더 세밀하게 제어할 수 있는 방법
- $.ajaxSetup()을 사용하여 기본 설정을 변경할 수 있음
어떤 방법을 선택하든, AJAX 요청 전에 URL을 인터셉트하여 contextPath를 추가하는 방식은 여러 요청에 대해 일관성 있는 URL 처리를 할 수 있다.
728x90