前端js调用后端API获取数据的三种方法(2022.7.25)

2023-05-16

前端js调用后台API获取数据的三种方法(2022.7.25)

  • 前言
  • 需求分析
    • 一个Get实例
      • 浏览器请求
      • SoapUI软件请求
    • 一个Post实例
      • 浏览器请求
      • SoapUI软件请求
  • 1、Http简介(Browser / Server)
    • 1.1 六个主流的浏览器
    • 1.2 HTTP请求(Get & Post)
  • 2、JavaScript简介
  • 3、前端js调用后端API的三种方法
    • 3.1 XMLHttpRequest(无需引入外部库)
      • 3.1.1 get实例(XHR)
        • 3.1.1.1 xhr-get.html
        • 3.1.1.2 xhr-get.html运行结果
      • 3.1.2 post实例( XHR)
        • 3.1.2.1 xhr-post.html
        • 3.1.2.2 xhr-post.html 运行结果
    • 3.2 jQuery或Ajax(引入jQuery库)
      • 3.2.1 jQuery简介
        • 3.2.1.1 get实例(jQuery)
          • 3.2.1.1.1 jQuery-get.html
          • 3.2.1.1.2 jQuery-get.html 运行结果
        • 3.2.1.2 post实例(jQuery)
          • 3.2.1.2.1 jQuery-post.html
          • 3.2.1.2.2 jQuery-post.html 运行结果
      • 3.2.2 Ajax简介及使用
        • 3.2.2.1 get实例(ajax)
          • 3.2.2.1.1 ajax-get.html
          • 3.2.2.1.2 ajax-get.html 运行结果
        • 3.2.2.2 post实例(ajax)
          • 3.2.2.2.1 ajax-post.html
          • 3.2.2.2.2 ajax-post.html 运行结果
    • 3.3 axios(引入axios库)
      • 3.3.1 get实例(axios)
        • 3.3.1.1 axios-get.html
        • 3.3.1.2 axios-get.html 运行结果
      • 3.3.2 post实例(axios)
        • 3.3.2.1 axios-post.html
        • 3.3.2.2 axios-post.html 运行结果
  • 4、总结

前言

        随着云计算分布式微服务技术的发展,现有网络项目大都基于前后端分离的技术手段实施,一方面是便于缓解后台服务器的压力,充分利用各台服务节点的计算和存储资源,尽可能地提高服务器性能;另一方面可提高服务的可靠性、容灾能力,以便在某服务节点上服务器甚至节点崩溃的情况下得以对该服务快速有效地进行替换或恢复,表现为极强的修复能力(注:先进制造技术的发展和充足的材料供应能力使得时间、价格方面的维修成本不断高于替换成本,让废旧品及时得到回收利用再生产,从而减少繁琐的维修过程,以便缩短维修时间,即能换不修原则)。
        在Web项目实施的过程中,后端工程师负责发布Web服务,提供完善的调用接口;而前端开发人员则以后台服务接口的说明文档为基础,按需调用后台API来实现数据的接收,最后利用可视化技术对数据进行炫酷展示,进而提供强大的平台功能

需求分析

        在Web前端开发的过程中,javascript 工程师开发人员往往需要调用后台API来获取所需数据(data),之后通过向菜单、列表、表格、文本框、按钮、下拉框div内部控件中填充显示,从而实现网页系统的展示、查询和动态更新等目标。当然,前端开发者和后台工程师皆可通过PostmanSoapUI等软件来测试接口是否正常和能否返回数据,或者自己编写Java代码来发送http请求,最常用的非DevTools莫属。

        下图是网上的一个后台API实例,它利用Swagger在线文档说明了多个后台接口的调用方法,较为详细,实测有效,通过此实例来证明本文所述三种方法的可行性和有效性。

网上的一个后台API在线文档

一个Get实例

        http://112.125.90.247:81/api/Log4Net/GetAsync?page=1&intPageSize=20,此Get类型的url是一个典型的单页查询接口,用于获取HTML文档中分页表格第1页中的20条数据记录,通过修改pageintPageSize的大小然后发送Get类型的Http请求主动获取响应数据得以动态更新前端页面表格。

浏览器请求

在这里插入图片描述

SoapUI软件请求

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

一个Post实例

url: "http://112.125.90.247:81/api/Data/Post",
data: {
    "Id": "string",
    "Name": "string",
    "X": 123,
    "Y": 456,
    "Num": 0,
    "Note": "string",
    "Attachment": "string",
    "CreateTime": "2022-07-19T15:33:28.504Z",
    "UpdateTime": "2022-07-19T15:33:28.504Z"
},

        此Post实例对应的url为http://112.125.90.247:81/api/Data/Post,需要向其发送的数据字段共有9个,分别是Id、Name、X、Y、Num、Note、Attachment、CreateTime、UpdateTime,Post类型的请求需要将其嵌入到XML请求进行发送,之后获取XML响应并解析结果得到所需的返回数据。

浏览器请求

        如果将上述请求封装为Get类型的请求,则对应url为http://112.125.90.247:81/api/Data/Post?Id=String&Name=string&X=123&Y=456&Num=0&Note=string&Attachment=string&CreateTime=2022-07-19T15:33:28.504Z&UpdateTime=2022-07-19T15:33:28.504Z,将其在浏览器地址栏中打开,提示如下信息:请求的资源不支持http方法"GET",这就说明此Post类型的后台API接口在开发时明确了不支持Get方式访问,但有的Post接口是支持Get方法访问的,因为在后端可进行配置

在这里插入图片描述

SoapUI软件请求

在这里插入图片描述

1、Http简介(Browser / Server)

        HTTP一般指HTTP 协议(超文本传输协议,即HyperText Transfer Protocol的缩写),是因特网上应用最为广泛的一种网络传输协议。作为一种用于分布式、协作式和超媒体信息系统的应用层协议,HTTP 是为 Web 浏览器Web 服务器之间的通信而设计的,它基于 TCP/IP 通信协议来传递HTML*文件、图片、文本、视频、、音频、查询结果等数据。

1.1 六个主流的浏览器

Chrome
Edge
Firefox
Internet Explorer
Opera
Safari
各大浏览器

        B/S类型的Web项目需要依靠网页浏览器来展示前端网页平台效果,而各个浏览器因版本和内核的不同所对应的的兼容性支持能力也不尽相同,而从用户体验而言,目前业界内使用次数较多和受到一致好评的浏览器当属——Google公司推出的Chrome网页浏览器。

1.2 HTTP请求(Get & Post)

        HTTP请求是指从Client端到Server端的请求消息,通常是对资源进行请求,需要设定资源的请求方法Method资源的标识符Identifier使用的协议Protocol及版本Version,然后向Web服务器发送数据块(即请求信息)。HTTP请求包含多种方法,最常用的为Get方式Post方式,下表对这两种方式进行了简单对比。

GetPost
参数在URL参数放在请求体
发送数据量小发送数据量大
安全性低,会被缓存安全性高,不会缓存
Http请求中Get方式和Post方式的对比

2、JavaScript简介

        JavaScript作为动态客户端脚本语言,可提供网页内容的动态更新、地图交互、二三维图形动画展示、视频播放及点唱机滚动等效果,简而言之,HTML和CSS仅能够提供静态页面,就是对静态的网页信息实现动态化

JavaScript官网
Github上的JavaScript

3、前端js调用后端API的三种方法

下面主要介绍三种方法来实现前端js对后端API接口的调用:
方法一XMLHttpRequest
方法二jQuery和Ajax
方法三axios

3.1 XMLHttpRequest(无需引入外部库)

        随着XMlHttpRequest对象的广泛采用,开发者可以快速构建如 Google MapsGmail 这样的 Web 应用程序,这些应用程序使用 XMLHttpRequest 来获取新的地图图块或新的电子邮件,而无需重新加载整个页面。使用XMLHttpRequest的步骤为:(1)创建XMLHttpRequest对象;(2)建立http连接;(3)发送请求;(4)获取返回数据
        Post请求与Get请求主要有两点不同:
post请求需要设置请求头的格式内容:xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
post请求参数放在send里面,即请求体。具体详情可参考mozilla-xmlhttprequest和Github上对xmlhttprequest的有关介绍。
在这里插入图片描述
在这里插入图片描述

3.1.1 get实例(XHR)

3.1.1.1 xhr-get.html

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>HTML页面测试XHR请求 By jing_zhong</title>
        <script>
            //获取系统当前时间的函数
            function gettime(){
                var a = new Date();
                var b = a.toLocaleTimeString();
                var c = a.toLocaleDateString();
                document.getElementById("currenttime").innerHTML = c+"&nbsp"+b +" By jing_zhong";
            }
            setInterval(function() {gettime()},1000);
            var responsecontent;
            //发送HTTP请求的函数
            function SendXMLHttpRequest() {
                var pageid = document.getElementById("pageid").value;
                var pagesize = document.getElementById("pagesize").value;
                if(!isNaN(Number(pageid)) && !isNaN(Number(pagesize))){
                    var xmlhttp,url="http://112.125.90.247:81/api/Log4Net/GetAsync?page="+pageid+"&intPageSize="+pagesize;
                    if (window.XMLHttpRequest){
                        xmlhttp = new XMLHttpRequest();//  IE7+, Firefox, Chrome, Opera, Safari 浏览器执行代码
                    }
                    else{
                        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");// IE6, IE5 浏览器执行代码
                    }
                    xmlhttp.onreadystatechange=function(){
                        if (xmlhttp.readyState==4 && xmlhttp.status==200){
                            responsecontent = xmlhttp.responseText;
                            var Res = "成功获取HTTP响应,得到第"+pageid+"页共"+pagesize+"个结果!\n"+responsecontent;
                            document.getElementById("result").innerText = Res;
                            document.getElementById("convertjson").disabled = false;
                            document.getElementById("jsonresult").innerText = "";
                        }
                    }
                    xmlhttp.open("GET",url,true);
                    xmlhttp.send();
                }else{
                    window.alert("请输入整数!");
                    document.getElementById("result").innerText = "";
                    document.getElementById("convertjson").disabled = true;
                    responsecontent = "";
                }

            }
            //对json数据进行高亮的函数
            function syntaxHighlight(json) {
                if (typeof json != 'string') {
                    json = JSON.stringify(json, undefined, 2);
                }
                json = json.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');
                return json.replace(/("(\\u[a-zA-Z0-9]{4}|\\[^u]|[^\\"])*"(\s*:)?|\b(true|false|null)\b|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?)/g, function(match) {
                    var cls = 'number';
                    if (/^"/.test(match)) {
                        if (/:$/.test(match)) {
                            cls = 'key';
                        } else {
                            cls = 'string';
                        }
                    } else if (/true|false/.test(match)) {
                        cls = 'boolean';
                    } else if (/null/.test(match)) {
                        cls = 'null';
                    }
                    return '<span class="' + cls + '">' + match + '</span>';
                });
            }
            //将请求结果转为json格式的函数
            function ToJSON() {
                console.log(responsecontent);
                var Res = JSON.parse(responsecontent, null, 3);
                document.getElementById("jsonresult").innerHTML = syntaxHighlight(Res);
            }
        </script>
        <style>
            pre { background-color:rgb(238, 231, 231); outline: 1px solid #ccc; padding: 5px; margin: 5px; }
            .string { color: rgb(22, 10, 126); }
            .number { color: rgb(13, 214, 124); }
            .boolean { color: rgb(225, 97, 195); }
            .null { color: rgb(172, 167, 14); }
            .key { color: #cf4914; }
            #myDiv { background-image: url("https://img2.baidu.com/it/u=1721953618,4133119400&fm=253&fmt=auto&app=138&f=JPEG");}
        </style>
    </head>
    <body>
        <div id="myDiv">
            <label id="currenttime" style="color: #AC2925; "></label>
            <form style="color:#2572adfa;border:2px">
                <label>请输入页数(如5)</label><input type="text" value="5" id="pageid"/><br>
                <label>请输入页面大小(15)</label><input type="text" value="15" id="pagesize"/>
            </form>
            <button type="button" onclick="SendXMLHttpRequest()">1、利用XMLHttpRequest发送请求</button>
            <p id="result" style="color:#b0a117fa"></p>
            <button type="button" disabled="false" onclick="ToJSON()" id="convertjson">2、将请求结果转为json格式</button>
            <pre id="jsonresult" class="pre"></pre>
        </div>
    </body>
</html>

3.1.1.2 xhr-get.html运行结果

在这里插入图片描述

3.1.2 post实例( XHR)

3.1.2.1 xhr-post.html

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>HTML页面测试XHR请求 By jing_zhong</title>
        <script>
            //获取系统当前时间的函数
            function gettime(){
                var a = new Date();
                var b = a.toLocaleTimeString();
                var c = a.toLocaleDateString();
                document.getElementById("currenttime").innerHTML = c+"&nbsp"+b +" By jing_zhong";
            }
            setInterval(function() {gettime()},1000);
            var responsecontent;
            //发送HTTP请求的函数
            function SendXMLHttpRequest() {
                var xmlhttp,url="http://112.125.90.247:81/api/Data/Post";
                if (window.XMLHttpRequest){
                    xmlhttp = new XMLHttpRequest();//  IE7+, Firefox, Chrome, Opera, Safari 浏览器执行代码
                }
                else{
                    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");// IE6, IE5 浏览器执行代码
                }
                xmlhttp.onreadystatechange=function(){
                    if (xmlhttp.readyState==4 && xmlhttp.status==200){
                        responsecontent = xmlhttp.responseText;
                        var Res = "成功获取HTTP响应,得到结果!\n"+responsecontent;
                        document.getElementById("result").innerText = Res;
                        document.getElementById("convertjson").disabled = false;
                        document.getElementById("jsonresult").innerText = "";
                    }
                }
                xmlhttp.open("POST",url,true);
                xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");// Post请求需要设置请求头
                xmlhttp.send("Id="+"string"+"&Name="+"string"+"&X="+"123"+"&Y="+"456"+"&Num="+"0"+"&Note="+"string"+"&Attachment="+"string"+"&CreateTime="+"2022-07-19T15:33:28.504Z"+"&UpdateTime="+"2022-07-19T15:33:28.504Z");
            }
            //对json数据进行高亮的函数
            function syntaxHighlight(json) {
                if (typeof json != 'string') {
                    json = JSON.stringify(json, undefined, 2);
                }
                json = json.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');
                return json.replace(/("(\\u[a-zA-Z0-9]{4}|\\[^u]|[^\\"])*"(\s*:)?|\b(true|false|null)\b|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?)/g, function(match) {
                    var cls = 'number';
                    if (/^"/.test(match)) {
                        if (/:$/.test(match)) {
                            cls = 'key';
                        } else {
                            cls = 'string';
                        }
                    } else if (/true|false/.test(match)) {
                        cls = 'boolean';
                    } else if (/null/.test(match)) {
                        cls = 'null';
                    }
                    return '<span class="' + cls + '">' + match + '</span>';
                });
            }
            //将请求结果转为json格式的函数
            function ToJSON() {
                console.log(responsecontent);
                var Res = JSON.parse(responsecontent, null, 3);
                document.getElementById("jsonresult").innerHTML = syntaxHighlight(Res);
            }
        </script>
        <style>
            pre { background-color:rgb(238, 231, 231); outline: 1px solid #ccc; padding: 5px; margin: 5px; }
            .string { color: rgb(22, 10, 126); }
            .number { color: rgb(13, 214, 124); }
            .boolean { color: rgb(225, 97, 195); }
            .null { color: rgb(172, 167, 14); }
            .key { color: #cf4914; }
            #myDiv { background-image: url("https://img2.baidu.com/it/u=1721953618,4133119400&fm=253&fmt=auto&app=138&f=JPEG");}
        </style>
    </head>
    <body>
        <div id="myDiv">
            <label id="currenttime" style="color: #AC2925; "></label>
            <button type="button" onclick="SendXMLHttpRequest()">1、利用XMLHttpRequest发送请求</button>
            <p id="result" style="color:#b0a117fa"></p>
            <button type="button" disabled="false" onclick="ToJSON()" id="convertjson">2、将请求结果转为json格式</button>
            <pre id="jsonresult" class="pre"></pre>
        </div>
    </body>
</html>

3.1.2.2 xhr-post.html 运行结果

在这里插入图片描述

3.2 jQuery或Ajax(引入jQuery库)

3.2.1 jQuery简介

        作为一个 JavaScript 库,jQuery使得JavaScript编程十分简单,拥有write less, do more的响亮口号,十分注重实际行动和用户体验。关于jQuery的使用,一方面,可以下载jQuery文件在html文件中进行本地引用,或者直接引用带url链接的在线jQuery.js文件;另一方面,可以使用Node包管理工具npm进行命令行安装npm install jquery

3.2.1.1 get实例(jQuery)

3.2.1.1.1 jQuery-get.html
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>HTML页面测试XHR请求 By jing_zhong</title>
        <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
        <script>
            //获取系统当前时间的函数
            function gettime(){
                var a = new Date();
                var b = a.toLocaleTimeString();
                var c = a.toLocaleDateString();
                document.getElementById("currenttime").innerHTML = c+"&nbsp"+b +" By jing_zhong";
            }
            setInterval(function() {gettime()},1000);
            var responsecontent;
            //发送HTTP请求的函数
            function SendXMLHttpRequest() {
                var pageid = document.getElementById("pageid").value;
                var pagesize = document.getElementById("pagesize").value;
                if(!isNaN(Number(pageid)) && !isNaN(Number(pagesize))){
                    var url="http://112.125.90.247:81/api/Log4Net/GetAsync?page="+pageid+"&intPageSize="+pagesize;
                    $.get(url).done(function (res) {
                        console.log(res);
                        responsecontent = JSON.stringify(res.response.data);
                        var Res = "成功获取HTTP响应,得到第"+pageid+"页共"+pagesize+"个结果!\n"+responsecontent;
                            document.getElementById("result").innerText = Res;
                            document.getElementById("convertjson").disabled = false;
                            document.getElementById("jsonresult").innerText = "";
                    }).fail(function (e) {
                        console.log('error');
                    })
                }else{
                    window.alert("请输入整数!");
                    document.getElementById("result").innerText = "";
                    document.getElementById("convertjson").disabled = true;
                    responsecontent = "";
                }
            }
            //对json数据进行高亮的函数
            function syntaxHighlight(json) {
                if (typeof json != 'string') {
                    json = JSON.stringify(json, undefined, 2);
                }
                json = json.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');
                return json.replace(/("(\\u[a-zA-Z0-9]{4}|\\[^u]|[^\\"])*"(\s*:)?|\b(true|false|null)\b|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?)/g, function(match) {
                    var cls = 'number';
                    if (/^"/.test(match)) {
                        if (/:$/.test(match)) {
                            cls = 'key';
                        } else {
                            cls = 'string';
                        }
                    } else if (/true|false/.test(match)) {
                        cls = 'boolean';
                    } else if (/null/.test(match)) {
                        cls = 'null';
                    }
                    return '<span class="' + cls + '">' + match + '</span>';
                });
            }
            //将请求结果转为json格式的函数
            function ToJSON() {
                console.log(responsecontent);
                var Res = JSON.parse(responsecontent, null, 3);
                document.getElementById("jsonresult").innerHTML = syntaxHighlight(Res);
            }
        </script>
        <style>
            pre { background-color:rgb(238, 231, 231); outline: 1px solid #ccc; padding: 5px; margin: 5px; }
            .string { color: rgb(22, 10, 126); }
            .number { color: rgb(13, 214, 124); }
            .boolean { color: rgb(225, 97, 195); }
            .null { color: rgb(172, 167, 14); }
            .key { color: #cf4914; }
            #myDiv { background-image: url("https://img2.baidu.com/it/u=1721953618,4133119400&fm=253&fmt=auto&app=138&f=JPEG");}
        </style>
    </head>
    <body>
        <div id="myDiv">
            <label id="currenttime" style="color: #AC2925; "></label>
            <form style="color:#2572adfa;border:2px">
                <label>请输入页数(如5)</label><input type="text" value="5" id="pageid"/><br>
                <label>请输入页面大小(15)</label><input type="text" value="15" id="pagesize"/>
            </form>
            <button type="button" onclick="SendXMLHttpRequest()">1、利用XMLHttpRequest发送请求</button>
            <p id="result" style="color:#b0a117fa"></p>
            <button type="button" disabled="false" onclick="ToJSON()" id="convertjson">2、将请求结果转为json格式</button>
            <pre id="jsonresult" class="pre"></pre>
        </div>
    </body>
</html>
3.2.1.1.2 jQuery-get.html 运行结果

在这里插入图片描述

3.2.1.2 post实例(jQuery)

3.2.1.2.1 jQuery-post.html

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>HTML页面测试XHR请求 By jing_zhong</title>
        <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
        <script>
            //获取系统当前时间的函数
            function gettime(){
                var a = new Date();
                var b = a.toLocaleTimeString();
                var c = a.toLocaleDateString();
                document.getElementById("currenttime").innerHTML = c+"&nbsp"+b +" By jing_zhong";
            }
            setInterval(function() {gettime()},1000);
            var responsecontent;
            //发送HTTP请求的函数
            function SendXMLHttpRequest() {
                var url="http://112.125.90.247:81/api/Data/Post";
                $.post(url,
                {
                    "Id": "string",
                    "Name": "string",
                    "X": 1234,
                    "Y": 4567,
                    "Num": 0,
                    "Note": "string",
                    "Attachment": "string",
                    "CreateTime": "2022-07-19T15:33:28.504Z",
                    "UpdateTime": "2022-07-19T15:33:28.504Z"
                }).done(function(res){
                    alert("数据: " + JSON.stringify(res));
                    responsecontent = JSON.stringify(res);
                    var Res = "成功获取HTTP响应如下: "+"\n"+responsecontent;
                    document.getElementById("result").innerText = Res;
                    document.getElementById("convertjson").disabled = false;
                    document.getElementById("jsonresult").innerText = "";
                });
            }
            //对json数据进行高亮的函数
            function syntaxHighlight(json) {
                if (typeof json != 'string') {
                    json = JSON.stringify(json, undefined, 2);
                }
                json = json.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');
                return json.replace(/("(\\u[a-zA-Z0-9]{4}|\\[^u]|[^\\"])*"(\s*:)?|\b(true|false|null)\b|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?)/g, function(match) {
                    var cls = 'number';
                    if (/^"/.test(match)) {
                        if (/:$/.test(match)) {
                            cls = 'key';
                        } else {
                            cls = 'string';
                        }
                    } else if (/true|false/.test(match)) {
                        cls = 'boolean';
                    } else if (/null/.test(match)) {
                        cls = 'null';
                    }
                    return '<span class="' + cls + '">' + match + '</span>';
                });
            }
            //将请求结果转为json格式的函数
            function ToJSON() {
                console.log(responsecontent);
                var Res = JSON.parse(responsecontent, null, 3);
                document.getElementById("jsonresult").innerHTML = syntaxHighlight(Res);
            }
        </script>
        <style>
            pre { background-color:rgb(238, 231, 231); outline: 1px solid #ccc; padding: 5px; margin: 5px; }
            .string { color: rgb(22, 10, 126); }
            .number { color: rgb(13, 214, 124); }
            .boolean { color: rgb(225, 97, 195); }
            .null { color: rgb(172, 167, 14); }
            .key { color: #cf4914; }
            #myDiv { background-image: url("https://img2.baidu.com/it/u=1721953618,4133119400&fm=253&fmt=auto&app=138&f=JPEG");}
        </style>
    </head>
    <body>
        <div id="myDiv">
            <label id="currenttime" style="color: #AC2925; "></label>
            <button type="button" onclick="SendXMLHttpRequest()">1、利用XMLHttpRequest发送请求</button>
            <p id="result" style="color:#b0a117fa"></p>
            <button type="button" disabled="false" onclick="ToJSON()" id="convertjson">2、将请求结果转为json格式</button>
            <pre id="jsonresult" class="pre"></pre>
        </div>
    </body>
</html>
3.2.1.2.2 jQuery-post.html 运行结果

在这里插入图片描述

3.2.2 Ajax简介及使用

        Ajax的全称为Asynchronous JavaScript and XML异步 JavaScript 和 XML,它的作用是在无需刷新整个页面的条件下,通过与远端服务器交换数据来实现网页内容的局部更新,优点是能够提高用户体验,较少网络数据的传输量
        XMLHttpRequest 对象是Ajax技术的一部分。使用 Ajax可以调用XMLHttpRequest API 在浏览器和服务器之间传递数据,而无需重新加载网页。Ajax请求数据最核心的依赖是浏览器提供的XMLHttpRequest对象,因为请求是异步的,可以让浏览器发出HTTP请求与接收HTTP响应,同时接着做其他事情,等收到XHR返回来的数据再对页面进行渲染。然而,各种浏览器以不同的方式来实现 Ajax API,这就意味着开发人员在编写代码时要考虑不同浏览器的兼容性,以确保 Ajax 可以通用。不过,jQueryAjax 支持,提供了功能齐全的 $.ajax() 方法,能够直接调用。大多数的 jQueryAjax应用程序实际上并不使用 XML,反而将数据传输为纯 HTMLJSON
        另外,尽管Ajax 不能跨域工作,如由于违反了同源策略而无法从 example1.com 加载的网页向 example2.com 发出 Ajax 请求。作为一种解决方法,JSONP通过在html中使用script标签从另一个域加载包含任意 JavaScript 内容和 JSON 的文件。同时浏览器也实现了一种称为跨域资源共享 (CORS) 的技术,该技术也允许 Ajax 请求到不同的域。

3.2.2.1 get实例(ajax)

3.2.2.1.1 ajax-get.html
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>HTML页面测试XHR请求 By jing_zhong</title>
        <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
        <script>
            //获取系统当前时间的函数
            function gettime(){
                var a = new Date();
                var b = a.toLocaleTimeString();
                var c = a.toLocaleDateString();
                document.getElementById("currenttime").innerHTML = c+"&nbsp"+b +" By jing_zhong";
            }
            setInterval(function() {gettime()},1000);
            var responsecontent;
            //发送HTTP请求的函数
            function SendXMLHttpRequest() {
                var pageid = document.getElementById("pageid").value;
                var pagesize = document.getElementById("pagesize").value;
                if(!isNaN(Number(pageid)) && !isNaN(Number(pagesize))){
                    // Using the core $.ajax() method
                    $.ajax({      
                        url: "http://112.125.90.247:81/api/Log4Net/GetAsync",// The URL for the request
                        data: { page: pageid, intPageSize: pagesize },// The data to send (will be converted to a query string)
                        type: "GET",// Whether this is a POST or GET request
                    }).done(function( res ) {
                        responsecontent = JSON.stringify(res.response.data);
                        var Res = "成功获取HTTP响应,得到第"+pageid+"页共"+pagesize+"个结果!\n"+responsecontent;
                        document.getElementById("result").innerText = Res;
                        document.getElementById("convertjson").disabled = false;
                        document.getElementById("jsonresult").innerText = "";
                    });
                }else{
                    window.alert("请输入整数!");
                    document.getElementById("result").innerText = "";
                    document.getElementById("convertjson").disabled = true;
                    responsecontent = "";
                }

            }
            //对json数据进行高亮的函数
            function syntaxHighlight(json) {
                if (typeof json != 'string') {
                    json = JSON.stringify(json, undefined, 2);
                }
                json = json.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');
                return json.replace(/("(\\u[a-zA-Z0-9]{4}|\\[^u]|[^\\"])*"(\s*:)?|\b(true|false|null)\b|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?)/g, function(match) {
                    var cls = 'number';
                    if (/^"/.test(match)) {
                        if (/:$/.test(match)) {
                            cls = 'key';
                        } else {
                            cls = 'string';
                        }
                    } else if (/true|false/.test(match)) {
                        cls = 'boolean';
                    } else if (/null/.test(match)) {
                        cls = 'null';
                    }
                    return '<span class="' + cls + '">' + match + '</span>';
                });
            }
            //将请求结果转为json格式的函数
            function ToJSON() {
                console.log(responsecontent);
                var Res = JSON.parse(responsecontent, null, 3);
                document.getElementById("jsonresult").innerHTML = syntaxHighlight(Res);
            }
        </script>
        <style>
            pre { background-color:rgb(238, 231, 231); outline: 1px solid #ccc; padding: 5px; margin: 5px; }
            .string { color: rgb(22, 10, 126); }
            .number { color: rgb(13, 214, 124); }
            .boolean { color: rgb(225, 97, 195); }
            .null { color: rgb(172, 167, 14); }
            .key { color: #cf4914; }
            #myDiv { background-image: url("https://img2.baidu.com/it/u=1721953618,4133119400&fm=253&fmt=auto&app=138&f=JPEG");}
        </style>
    </head>
    <body>
        <div id="myDiv">
            <label id="currenttime" style="color: #AC2925; "></label>
            <form style="color:#2572adfa;border:2px">
                <label>请输入页数(如5)</label><input type="text" value="5" id="pageid"/><br>
                <label>请输入页面大小(15)</label><input type="text" value="15" id="pagesize"/>
            </form>
            <button type="button" onclick="SendXMLHttpRequest()">1、利用XMLHttpRequest发送请求</button>
            <p id="result" style="color:#b0a117fa"></p>
            <button type="button" disabled="false" onclick="ToJSON()" id="convertjson">2、将请求结果转为json格式</button>
            <pre id="jsonresult" class="pre"></pre>
        </div>
    </body>
</html>
3.2.2.1.2 ajax-get.html 运行结果

在这里插入图片描述

3.2.2.2 post实例(ajax)

3.2.2.2.1 ajax-post.html

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>HTML页面测试XHR请求 By jing_zhong</title>
        <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
        <script>
            //获取系统当前时间的函数
            function gettime(){
                var a = new Date();
                var b = a.toLocaleTimeString();
                var c = a.toLocaleDateString();
                document.getElementById("currenttime").innerHTML = c+"&nbsp"+b +" By jing_zhong";
            }
            setInterval(function() {gettime()},1000);
            var responsecontent;
            //发送HTTP请求的函数
            function SendXMLHttpRequest() {
                // Using the core $.ajax() method
                $.ajax({      
                    url: "http://112.125.90.247:81/api/Data/Post",// The URL for the request
                    data: {
                        "Id": "string",
                        "Name": "string",
                        "X": 123,
                        "Y": 456,
                        "Num": 0,
                        "Note": "string",
                        "Attachment": "string",
                        "CreateTime": "2022-07-19T15:33:28.504Z",
                        "UpdateTime": "2022-07-19T15:33:28.504Z" 
                        },// The data to send (will be converted to a query string)
                    type: "POST",// Whether this is a POST or GET request
                }).done(function( res ) {
                    responsecontent = JSON.stringify(res);
                    var Res = "成功获取HTTP响应(如下):"+"\n"+responsecontent;
                    document.getElementById("result").innerText = Res;
                    document.getElementById("convertjson").disabled = false;
                    document.getElementById("jsonresult").innerText = "";
                });
            }
            //对json数据进行高亮的函数
            function syntaxHighlight(json) {
                if (typeof json != 'string') {
                    json = JSON.stringify(json, undefined, 2);
                }
                json = json.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');
                return json.replace(/("(\\u[a-zA-Z0-9]{4}|\\[^u]|[^\\"])*"(\s*:)?|\b(true|false|null)\b|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?)/g, function(match) {
                    var cls = 'number';
                    if (/^"/.test(match)) {
                        if (/:$/.test(match)) {
                            cls = 'key';
                        } else {
                            cls = 'string';
                        }
                    } else if (/true|false/.test(match)) {
                        cls = 'boolean';
                    } else if (/null/.test(match)) {
                        cls = 'null';
                    }
                    return '<span class="' + cls + '">' + match + '</span>';
                });
            }
            //将请求结果转为json格式的函数
            function ToJSON() {
                console.log(responsecontent);
                var Res = JSON.parse(responsecontent, null, 3);
                document.getElementById("jsonresult").innerHTML = syntaxHighlight(Res);
            }
        </script>
        <style>
            pre { background-color:rgb(238, 231, 231); outline: 1px solid #ccc; padding: 5px; margin: 5px; }
            .string { color: rgb(22, 10, 126); }
            .number { color: rgb(13, 214, 124); }
            .boolean { color: rgb(225, 97, 195); }
            .null { color: rgb(172, 167, 14); }
            .key { color: #cf4914; }
            #myDiv { background-image: url("https://img2.baidu.com/it/u=1721953618,4133119400&fm=253&fmt=auto&app=138&f=JPEG");}
        </style>
    </head>
    <body>
        <div id="myDiv">
            <label id="currenttime" style="color: #AC2925; "></label>
            <button type="button" onclick="SendXMLHttpRequest()">1、利用XMLHttpRequest发送请求</button>
            <p id="result" style="color:#b0a117fa"></p>
            <button type="button" disabled="false" onclick="ToJSON()" id="convertjson">2、将请求结果转为json格式</button>
            <pre id="jsonresult" class="pre"></pre>
        </div>
    </body>
</html>
3.2.2.2.2 ajax-post.html 运行结果

在这里插入图片描述

3.3 axios(引入axios库)

        axios是一个简洁、易用且高效的http库,本质上也封装成了js库,在服务端它使用原生node.js http模块, 而在客户端 (浏览端) 则使用XMLHttpRequest。对于axios的使用,一方面,可通过在html文件中利用script标签进行本地或在线引入js文件进行调用;另一方面,如果使用Nodejs开发Web项目,则通过Node包管理工具npm进行命令行安装npm install axios

<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>

或者

<script src="https://unpkg.com/axios/dist/axios.min.js"></script>

3.3.1 get实例(axios)

3.3.1.1 axios-get.html

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>HTML页面测试XHR请求 By jing_zhong</title>
        <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
        <script>
            //获取系统当前时间的函数
            function gettime(){
                var a = new Date();
                var b = a.toLocaleTimeString();
                var c = a.toLocaleDateString();
                document.getElementById("currenttime").innerHTML = c+"&nbsp"+b +" By jing_zhong";
            }
            setInterval(function() {gettime()},1000);
            var responsecontent;
            //发送HTTP请求的函数
            function SendXMLHttpRequest() {
                var pageid = document.getElementById("pageid").value;
                var pagesize = document.getElementById("pagesize").value;
                if(!isNaN(Number(pageid)) && !isNaN(Number(pagesize))){
                    axios({
                        method: 'get',
                        url: "http://112.125.90.247:81/api/Log4Net/GetAsync?page="+pageid+"&intPageSize="+pagesize
                    })
                    .then(function (response) {
                        responsecontent = JSON.stringify(response.data.response.data);
                        var Res = "成功获取HTTP响应,得到第"+pageid+"页共"+pagesize+"个结果!\n"+responsecontent;
                        document.getElementById("result").innerText = Res;
                        document.getElementById("convertjson").disabled = false;
                        document.getElementById("jsonresult").innerText = "";
                    });
                }else{
                    window.alert("请输入整数!");
                    document.getElementById("result").innerText = "";
                    document.getElementById("convertjson").disabled = true;
                    responsecontent = "";
                }

            }
            //对json数据进行高亮的函数
            function syntaxHighlight(json) {
                if (typeof json != 'string') {
                    json = JSON.stringify(json, undefined, 2);
                }
                json = json.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');
                return json.replace(/("(\\u[a-zA-Z0-9]{4}|\\[^u]|[^\\"])*"(\s*:)?|\b(true|false|null)\b|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?)/g, function(match) {
                    var cls = 'number';
                    if (/^"/.test(match)) {
                        if (/:$/.test(match)) {
                            cls = 'key';
                        } else {
                            cls = 'string';
                        }
                    } else if (/true|false/.test(match)) {
                        cls = 'boolean';
                    } else if (/null/.test(match)) {
                        cls = 'null';
                    }
                    return '<span class="' + cls + '">' + match + '</span>';
                });
            }
            //将请求结果转为json格式的函数
            function ToJSON() {
                console.log(responsecontent);
                var Res = JSON.parse(responsecontent, null, 3);
                document.getElementById("jsonresult").innerHTML = syntaxHighlight(Res);
            }
        </script>
        <style>
            pre { background-color:rgb(238, 231, 231); outline: 1px solid #ccc; padding: 5px; margin: 5px; }
            .string { color: rgb(22, 10, 126); }
            .number { color: rgb(13, 214, 124); }
            .boolean { color: rgb(225, 97, 195); }
            .null { color: rgb(172, 167, 14); }
            .key { color: #cf4914; }
            #myDiv { background-image: url("https://img2.baidu.com/it/u=1721953618,4133119400&fm=253&fmt=auto&app=138&f=JPEG");}
        </style>
    </head>
    <body>
        <div id="myDiv">
            <label id="currenttime" style="color: #AC2925; "></label>
            <form style="color:#2572adfa;border:2px">
                <label>请输入页数(如5)</label><input type="text" value="5" id="pageid"/><br>
                <label>请输入页面大小(15)</label><input type="text" value="15" id="pagesize"/>
            </form>
            <button type="button" onclick="SendXMLHttpRequest()">1、利用XMLHttpRequest发送请求</button>
            <p id="result" style="color:#b0a117fa"></p>
            <button type="button" disabled="false" onclick="ToJSON()" id="convertjson">2、将请求结果转为json格式</button>
            <pre id="jsonresult" class="pre"></pre>
        </div>
    </body>
</html>

3.3.1.2 axios-get.html 运行结果

在这里插入图片描述

3.3.2 post实例(axios)

3.3.2.1 axios-post.html

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>HTML页面测试XHR请求 By jing_zhong</title>
        <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
        <script>
            //获取系统当前时间的函数
            function gettime(){
                var a = new Date();
                var b = a.toLocaleTimeString();
                var c = a.toLocaleDateString();
                document.getElementById("currenttime").innerHTML = c+"&nbsp"+b +" By jing_zhong";
            }
            setInterval(function() {gettime()},1000);
            var responsecontent;
            //发送HTTP请求的函数
            function SendXMLHttpRequest() {
                axios({
                    method: 'post',
                    url: "http://112.125.90.247:81/api/Data/Post",
                    data: {
                        "Id": "string",
                        "Name": "string",
                        "X": 123,
                        "Y": 456,
                        "Num": 0,
                        "Note": "string",
                        "Attachment": "string",
                        "CreateTime": "2022-07-19T15:33:28.504Z",
                        "UpdateTime": "2022-07-19T15:33:28.504Z"
                    },
                    //baseURL: 'http://112.125.90.247:81/',//http://112.125.90.247:81/api/Data/Post
                    timeout: 1000,
                    headers: {'Content-Type':'application/x-www-form-urlencoded'}
                }).then(function (response) {
                    responsecontent = JSON.stringify(response.data);
                    var Res = "成功获取HTTP响应,得到结果!\n"+responsecontent;
                    document.getElementById("result").innerText = Res;
                    document.getElementById("convertjson").disabled = false;
                    document.getElementById("jsonresult").innerText = "";
                }).catch(function(error){
                    console.log('error:' + error);
                })
            }
            //对json数据进行高亮的函数
            function syntaxHighlight(json) {
                if (typeof json != 'string') {
                    json = JSON.stringify(json, undefined, 2);
                }
                json = json.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');
                return json.replace(/("(\\u[a-zA-Z0-9]{4}|\\[^u]|[^\\"])*"(\s*:)?|\b(true|false|null)\b|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?)/g, function(match) {
                    var cls = 'number';
                    if (/^"/.test(match)) {
                        if (/:$/.test(match)) {
                            cls = 'key';
                        } else {
                            cls = 'string';
                        }
                    } else if (/true|false/.test(match)) {
                        cls = 'boolean';
                    } else if (/null/.test(match)) {
                        cls = 'null';
                    }
                    return '<span class="' + cls + '">' + match + '</span>';
                });
            }
            //将请求结果转为json格式的函数
            function ToJSON() {
                console.log(responsecontent);
                var Res = JSON.parse(responsecontent, null, 3);
                document.getElementById("jsonresult").innerHTML = syntaxHighlight(Res);
            }
        </script>
        <style>
            pre { background-color:rgb(238, 231, 231); outline: 1px solid #ccc; padding: 5px; margin: 5px; }
            .string { color: rgb(22, 10, 126); }
            .number { color: rgb(13, 214, 124); }
            .boolean { color: rgb(225, 97, 195); }
            .null { color: rgb(172, 167, 14); }
            .key { color: #cf4914; }
            #myDiv { background-image: url("https://img2.baidu.com/it/u=1721953618,4133119400&fm=253&fmt=auto&app=138&f=JPEG");}
        </style>
    </head>
    <body>
        <div id="myDiv">
            <label id="currenttime" style="color: #AC2925; "></label>
            <button type="button" onclick="SendXMLHttpRequest()">1、利用XMLHttpRequest发送请求</button>
            <p id="result" style="color:#b0a117fa"></p>
            <button type="button" disabled="false" onclick="ToJSON()" id="convertjson">2、将请求结果转为json格式</button>
            <pre id="jsonresult" class="pre"></pre>
        </div>
    </body>
</html>

3.3.2.2 axios-post.html 运行结果

在这里插入图片描述

4、总结

        XMLHttpRequest是浏览器所支持原生js的方法,可直接调用;而jQuery和Ajax均需要依赖jQurey库;而axios多用于Nodejs管理的VueReact等项目中,作为典型的前后端分离API调用,通常需要处理跨域请求问题,针对跨域问题的解决办法在axios官网都有详细介绍,此处不再赘述。当axios用于html中进行Post请求,需要注意设置headers参数以得到成功的请求结果,亲身实践,多多感悟😁😁😁!!!

未设置header参数而报错
设置header参数headers: {'Content-Type':'application/x-www-form-urlencoded'}

所用后台API实例来源于网络,仅供个人学习和研究其设计思想而交流使用,切勿频繁调用和非法商用

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

前端js调用后端API获取数据的三种方法(2022.7.25) 的相关文章

  • 如何使用 .NET XML API 删除 xmlns 属性

    XmlElement Attributes Remove 方法对于任意属性都可以正常工作 导致已删除的属性从 XmlDocument OuterXml 属性中删除 然而 Xmlns 属性是不同的 这是一个例子 XmlDocument doc
  • 是否还能获取Skype用户的在线状态?

    正如标题所说 API 服务发生 重大 变化后 是否仍然可以在 Skype 上查看用户的状态 在线 离线 忙碌 开发者部分现在看起来非常非常有限 http developer skype com http developer skype co
  • 如何正确使用 API 数据请求的请求头?

    我正在尝试使用 httr 包找到使用 R 连接到 Appannie 的 API 的方法 完全没有 API 连接经验 API需要包含请求头 引用自 appannie 网站 注册 App Annie 帐户并生成 API 密钥 将此密钥添加到您的
  • 哪些 Java 库可用于生成 KML? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 调用 REST API 的次数

    如果我有 HTTP REST API example getCount 示例代码 RestController public class CountController long count 0 Getmapping getCount pu
  • 关于如何处理涉及 API 集成的项目的想法

    我是一名学生 正在开发一个 Java 应用程序 该应用程序将充当一个应用程序的 Web 服务调用与另一个应用程序的 JMX API 之间的 转换层 这两个应用程序驻留在同一网络中的两个不同系统上 因此 本质上 它涉及一个可交付程序 该程序将
  • RESTful 设计:分页集合

    我正在设计一个 REST api 需要从服务器端强制执行分页 每个 x 翻阅任何资源集合的正确方法是什么 选项1 GET resource page
  • 移动应用程序的后台数据同步

    我们正在数据库之上构建 API 和移动应用程序 该数据库的主表中有数十万条记录 我们的移动开发人员正在努力推动应用程序在本地数据库中预加载完整的表 然后提供一项服务 让手机可以将更改与数据库同步updated at column 虽然这肯定
  • 如何在AngularJS控制器中调用API?

    我需要在 AngularJS 控制器中执行这些 API 调用 任何例子都会有帮助 app post user auth users auth app get user logout helpers isAuthenticated users
  • 等待多个 future 的回调

    最近我深入研究了一些使用 API 的工作 该API使用Unirest http库来简化从网络接收的工作 当然 由于数据是从 API 服务器调用的 因此我尝试通过使用对 API 的异步调用来提高效率 我的想法结构如下 通过返回 future
  • 如何获取 gmail api 的消费者密钥和消费者秘密?

    我正在尝试使用 Gmail php xoath php 示例 但是它需要输入消费者密钥和消费者秘密 我在 Gmail api 文档中找不到如何获取这些密钥和秘密 有谁知道如何获取它们或知道任何相关文档吗 Use anonymous anon
  • 创建 Javascript Api 接口

    我目前正在研究 php 中查询 sql 数据库的解决方案 但是 我希望其他网站能够查询数据库 或php中的函数 我搜索谷歌 但由于跨域策略 我认为 我无法找到如何将这些函数公开给javascript 有人知道我该怎么做吗 Try soap
  • 通过 API 设置 Nest 目标湿度

    我在文档中找不到有关设置 Nest 恒温器目标湿度的任何内容 我绝对必须能够远程设置湿度 有人成功地做到了这一点吗 湿度不是一个可写字段
  • PHP NuSoap 中的复杂类型

    我正在使用 PHP 中的 NuSoap 库构建一个 Web 服务 我的 Web 服务将充当客户端和供应商现有的 Web 服务之间的中间层 因此 客户端不是直接连接到供应商 而是连接到我的 Web 服务 我的 Web 服务连接到供应商并获取响
  • OpenTok - 如何手动发布/取消发布?

    我查看了这些链接 http www tokbox com opentok api tools js documentation overview publish html http www tokbox com opentok api to
  • 如何在 WordPress 中创建“路线”?

    为了我自己的理智 我正在尝试为 ajax api 创建一条路由 如下所示 api
  • Shutterfly 订单 API 。

    我找到了这个网站 http www shutterfly com documentation api OrderImage sfly http www shutterfly com documentation api OrderImage
  • Angularjs 和 api 之间的内部服务器错误 500

    我正在尝试从 angularjs 保存数据并将其发送到 api 但出现错误 500 内部服务器错误 控制器是一个数组 包含来自 html 页面的范围 任何帮助 控制器 scope save function scope setup push
  • 如何使用Python优化大型数据集的API调用?

    客观的 将地址列表发送到 API 并提取某些信息 例如 指示地址是否位于洪水区域的标志 Solution 适用于小数据的 Python 脚本 Problem 我想针对大输入优化当前的解决方案 如何提高 API 调用的性能 如果我有 100
  • 如何使用放心发送Content-Type表单数据请求?

    我需要使用 Rest Assured 调用表单数据类型 API 这是我的代码 private Map

随机推荐

  • 矩阵键盘时钟

    span class hljs preprocessor include lt reg52 h gt span class hljs comment 包含头文件 xff0c 一般情况不需要改动 xff0c 头文件包含特殊功能寄存器的定义 s
  • opencv上gpu版surf特征点与orb特征点提取及匹配实例

    一 前言 本文主要实现了使用opencv里的gpu版surf特征检测器和gpu版orb检测器 xff0c 分别对图片进行特征点提取及匹配 xff0c 并对寻获的特征点进行了距离筛选 xff0c 将匹配较为好的特征点进行展示 二 实现代码 我
  • while(c = getchar() != '\n')和while((c = getchar()) != '\n')区别

    在利用while循环和getchar 读取缓存中的数据时 xff0c 发现了一些问题 在最初 xff0c 我利用while c 61 getchar 61 n 的时候 xff0c 发现总是不能将我想要读取的值正确的赋值给c xff0c 在我
  • C++template模板

    模板 xff08 Template xff09 指C 43 43 程序设计设计语言中采用类型作为参数的程序设计 xff0c 支持通用程序设计 C 43 43 的标准库提供许多有用的函数大多结合了模板的观念 xff0c 如STL以及IO St
  • Linux Ubuntu 14.04平台下安装EDK2

    Linux Ubuntu 14 04平台下安装EDK2 博客是基于https github com tianocore tianocore github io wiki Common instructions和 UEFI原理和编程 完成的
  • ubuntu下安装和使用

    在ubuntu下完善代码的时候 会遇到想要跳转到函数定义处 或者跳转到其他相关文件的情况下 此时要借助linux下的ctags工具 在这里 xff0c 我会尽我所能细致地讲清楚如何把vim变成source insight 然而你仍然需要积极
  • STM32 嵌入式系统开发分层设计思想简谈

    简介 开始之前自我介绍一下 xff0c 我在大学学的是物联网工程专业 xff0c 可惜的是发现嵌入式并不好找工作 于是后面自学了前端 xff0c 并到美团从事了1年相关的开发工作 xff0c 但是发现嵌入式才是真爱 xff0c 于是又转到嵌
  • 基于51单片机的智能导盲杖语音播报积水检测温度提示灯光照明proteus仿真原理图

    功能介绍 xff1a 0 本系统采用STC89C52作为单片机 1 导盲仗的上部和底部分别设置超声波传感器 xff0c 利用超声波测距原理分别测得盲人面部和脚底离障碍物的距离 xff0c 并将障碍信息通过语音播报传递给盲人 2 导盲杖设有光
  • 我是如何在2个小时用智能CCD图像检测系统实现一个零件的自动分选项目

    项目实例完整代码可以下载Examples xff1a https pan baidu com s 1YPjR TPJYLmriXNVnNbgZg 提取码 xff1a 52ai 有一种水表的塑料齿轮 xff0c 是有注塑机大批量生产出来 xf
  • keil找不到芯片型号的解决方法

    1 上官网下载对应的固件包 http www keil com dd2 Pack eula container 例如 2 点击 Pack installer 3 点击 File gt Import xff0c 选中下载的固件包 如果选择后左
  • 基于llibcurl库做基本http GET/POST操作代码demo

    libcurl库详细解说请欣赏 xff1a https www cnblogs com xietianjiao p 13260021 html libcurl是一个跨平台的网络协议库 xff0c 支持http https ftp gophe
  • 网络-udp—代码

    01 socket的基本使用 py import socket def main 创建一个udp套接字 udp socket 61 socket socket socket AF INET socket SOCK DGRAM 可以使用套接字
  • Nginx 获取自定义请求header头和URL参数

    一 获取 header 请求头 在 ngx lua 中访问 Nginx 内置变量 ngx var http HEADER 即可获得请求头HEADER的内容 在 nginx配置中 xff0c 通过 http HEADER 即可获得请求头HEA
  • QT与C程序编译问题extern C

    最近在调测试程序 xff0c 小师妹的QT程序与我的C语言的测试程序 xff0c 编译时有问题 xff0c 在小城的帮助下 xff0c 解决了问题 xff0c 网上的帖子是这样的 因为C编译的时候会在函数名前面加一个 xff0c 比如f1
  • ArcGIS将Tif文件导出为高清图片的一种方法,亲测有效

    ArcGIS将Tif文件导出为高清图片的一种方法 xff0c 亲测有效 总共分如下三个步骤第一步 xff0c 打开ArcGIS xff0c 添加tif数据 xff0c 保存为mxd地图文档第二步 xff0c 导出图片 xff0c 点击Fil
  • 重装正版Windows 10和Microsoft office home and student 2019教程(2020.10.29)

    目录 环境准备 xff1a 一个U盘 xff08 至少8G xff09 步骤 第一步 利用微软下载工具制作U盘启动盘 到微软官网下载Windows 10 界面 xff0c 点击立即下载工具 后会弹出一个下载界面 xff0c 下载此文件Med
  • 禁忌搜索算法求解TSP旅行商问题C++(2020.11.19)

    TS算法求解TSP问题C 43 43 1 禁忌搜索算法1 1 基本思想及主要特点1 2 基本概念1 3 算法流程 2 TS求解TSP问题的C 43 43 实现2 1 输入数据文件 xff1a bayg29 tsp2 2 头文件2 3 所需的
  • Matlab读取高光谱遥感数据.Mat 和 .tif(2020.12.27)

    Matlab读取高光谱遥感数据 1 高光谱遥感数据简介2 两个开源的高光谱遥感数据集3 高光谱遥感数据常用格式3 1 Mat3 2 Tif 4 Matlab读取高光谱遥感数据4 1 Matlab读取 Mat格式的高光谱遥感数据4 1 1 M
  • 免登录实现CSDN博客代码复制(2021.9.26)

    一行代码实现免登录复制CSDN博客代码 2021 9 26 1 问题 xff1a 复制CSDN博客代码 xff0c 结果却提示需要登录 xff1f 2 解决方案 xff08 一行代码 xff09 2 1 直接登录CSDN账号进行复制 xff
  • 前端js调用后端API获取数据的三种方法(2022.7.25)

    前端js调用后台API获取数据的三种方法 xff08 2022 7 25 xff09 前言需求分析一个Get实例浏览器请求SoapUI软件请求 一个Post实例浏览器请求SoapUI软件请求 1 Http简介 xff08 Browser S