fetch请求代码

用于方便与后端做简单的接口测试(参数编码与不编码)

html 复制代码
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Fetch Request</title>
</head>

<body>
    <button id="fetchButton">Fetch Data</button>
    <div id="responseContainer"></div>

    <script>
        // 定义 URL 和参数
        const baseUrl = 'http://10.30.20.146:20510/api/v1/text/page';
        const params = {
            // textName: '!@中国# $%^&/*\=()_+??><[]{}',
            textName: "!@中国人$%^_+??><`~!@#$%^&*()_-+=|\}{;:'/?.>,</*-+.[",
            array: [1, 2, 3],
            page: 1,
            pageSize: 20,
            domainType: 1,
            decode: 1
        };

        // 获取按钮元素
        const fetchButton = document.getElementById('fetchButton');
        fetchButton.addEventListener('click', () => {
            performRequest(baseUrl, params, false);
        });

        async function performRequest(url, params, encodeParams = true) {
            // 构建完整的 URL
            const urlWithParams = buildUrlWithParams(url, params, encodeParams);
            console.log('===[[urlWithParams]]', urlWithParams);

            // 请求选项
            const options = {
                method: 'GET',
                headers: {
                    'Accept': '*/*',
                    'Accept-Encoding': 'gzip, deflate, br',
                    'Connection': 'keep-alive',
                    'User-Agent': 'PostmanRuntime-ApipostRuntime/1.1.0',
                    '_appId': '1',
                    '_tenantId': '1',
                    '_userId': '3026601398293760000'
                }
            };

            try {
                const response = await fetch(urlWithParams, options);
                if (!response.ok) {
                    throw new Error(`HTTP error! status: ${response.status}`);
                }
                const data = await response.json();
                console.log('Response data:', data);
                displayResponse(data);
            } catch (error) {
                console.error('Fetch error:', error);
            }
        }

        function buildUrlWithParams(url, params, encodeParams) {
            const urlObj = new URL(url);
            for (const [key, value] of Object.entries(params)) {
                if (encodeParams) {
                    urlObj.searchParams.append(key, encodeURIComponent(value));
                } else {
                    urlObj.searchParams.append(key, value);
                }
            }
            return urlObj.toString();
        }

        function displayResponse(data) {
            const responseContainer = document.getElementById('responseContainer');
            responseContainer.innerHTML = `<pre>${JSON.stringify(data, null, 2)}</pre>`;
        }
    </script>
</body>

</html>
相关推荐
hawk2014bj4 分钟前
Vue Router 快速入门
前端·javascript·vue.js
兔飞飞呀28 分钟前
常见转义字符
开发语言·前端·python
疯狂的沙粒42 分钟前
前端开发【插件】moment 基本使用详解【日期】
开发语言·javascript·css
小彭努力中1 小时前
58.在 Vue 3 中使用 OpenLayers 绘制点、线、圆、多边形
前端·javascript·vue.js·arcgis·ecmascript·openlayers
小曲曲1 小时前
可缩放大屏布局方式
前端
手撕代码1 小时前
了解什么是JavaEE(什么是JavaEE)
java·前端·java-ee
失眠的咕噜1 小时前
el-table 使用el-form 表单验证
前端·javascript·vue.js
可爱的秋秋啊1 小时前
vue3中el-table实现多表头并表格合并行或列
javascript·vue.js·elementui
古怪今人1 小时前
Vue页面开发和脚手架开发 Vue2集成ElementUI Vue3集成Element Plus
前端·vue.js·elementui
HsuYang1 小时前
Vite源码学习(三)——Vite内置插件
前端·javascript·架构