inula/packages/horizon-request/examples/interceptor/interceptorTest.html

105 lines
3.8 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Inula Request Interceptor Test</title>
<link rel="stylesheet" type="text/css" href="interceptorStyles.css">
</head>
<body>
<header>Inula Request interceptor Test</header>
<h2>使用拦截器:</h2>
<div class="response-container">
<h3>响应状态码:</h3>
<div class="pre-container">
<pre id="responseStatusWithInterceptor">等待发送请求...</pre>
</div>
<h3>请求拦截反馈:</h3>
<div class="pre-container">
<pre id="requestInterceptorFeedback">等待发送请求...</pre>
</div>
<h3>响应拦截反馈:</h3>
<div class="pre-container">
<pre id="responseInterceptorFeedback">等待发送请求...</pre>
</div>
<h3>响应数据:</h3>
<div class="pre-container">
<pre id="responseDataWithInterceptor">等待发送请求...</pre>
</div>
<div class="button">
<button id="sendRequestWithInterceptor">发送请求</button>
</div>
</div>
<h2>不使用拦截器:</h2>
<div class="response-container">
<h3>响应状态码:</h3>
<div class="pre-container">
<pre id="responseStatusWithoutInterceptor">等待发送请求...</pre>
</div>
<h3>拦截反馈:</h3>
<div class="pre-container">
<pre id="noInterceptorFeedback">等待发送请求...</pre>
</div>
<h3>响应数据:</h3>
<div class="pre-container">
<pre id="responseDataWithoutInterceptor">等待发送请求...</pre>
</div>
<div class="button">
<button id="sendRequestWithoutInterceptor">发送请求</button>
</div>
</div>
<script src="../../dist/bundle.js"></script>
<script>
// 创建使用拦截器的 IR 实例
const irInstance = inulaRequest.create();
// 添加请求拦截器
irInstance.interceptors.request.use(function(config) {
// 为请求添加自定义请求头
config.headers['IR-Custom-Header'] = 'CustomHeaderValue';
document.getElementById('requestInterceptorFeedback').textContent = '请求已拦截并添加请求头IR-Custom-Header';
return config;
}, function(error) {
return Promise.reject(error);
});
// 添加响应拦截器
irInstance.interceptors.response.use(function(response) {
// 更新响应状态码
response.status = 404;
document.getElementById('responseStatusWithInterceptor').textContent = String(response.status);
document.getElementById('responseInterceptorFeedback').textContent = '响应已被拦截状态响应码被强制修改成404'
return response;
}, function(error) {
return Promise.reject(error);
});
// 使用拦截器的请求
document.getElementById('sendRequestWithInterceptor').addEventListener('click', function () {
irInstance.get('http://localhost:3001/')
.then(function (response) {
document.getElementById('responseDataWithInterceptor').textContent = JSON.stringify(response.data, null, 2);
}).catch(function (error) {
document.getElementById('responseDataWithInterceptor').textContent = 'Request failed:' + error;
})
});
// 不使用拦截器的请求
document.getElementById('sendRequestWithoutInterceptor').addEventListener('click', function () {
inulaRequest.get('http://localhost:3001/')
.then(function (response) {
document.getElementById('responseStatusWithoutInterceptor').textContent = response.status;
document.getElementById('responseDataWithoutInterceptor').textContent = JSON.stringify(response.data, null, 2);
document.getElementById('noInterceptorFeedback').textContent = '请求未被拦截';
}).catch(function (error) {
document.getElementById('responseDataWithoutInterceptor').textContent = 'Request failed:' + error;
})
});
</script>
</body>
</html>