GVKun编程网logo

axios进阶实践之利用最优雅的方式写ajax请求(ajax如何写)

4

本篇文章给大家谈谈axios进阶实践之利用最优雅的方式写ajax请求,以及ajax如何写的知识点,同时本文还将给你拓展24_ajax请求_使用axios、ajax第十三节 AJAX-Axios(通用方

本篇文章给大家谈谈axios进阶实践之利用最优雅的方式写ajax请求,以及ajax如何写的知识点,同时本文还将给你拓展24_ajax请求_使用axios、ajax 第十三节 AJAX-Axios (通用方法) 函数发送AJAX请求 04:36、ajax 第十二节 AJAX-Axios发送AJAXget,post请求、AJAX---Axios发送AJAX请求等相关知识,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

axios进阶实践之利用最优雅的方式写ajax请求(ajax如何写)

axios进阶实践之利用最优雅的方式写ajax请求(ajax如何写)

前言

ajax相信不用过多介绍了,作者坚信可以用配置解决的问题,请勿硬编码,下面话不多说了,来一看看详细的介绍吧。

姊妹篇 jQuery进阶:

axios是Vue官方推荐的ajax库,用来取代vue-resource。更多详细的基础知识可以参考这篇文章:

优点:

  • 增加一个ajax接口,只需要在配置文件里多写几行就可以
  • 不需要在组件中写axios调用,直接调用api方法,很方便
  • 如果接口有调整,只需要修改一下接口配置文件就可以
  • 统一管理接口配置

1. content-type配置

rush:js;"> // filename: content-type.js module.exports = { formData: 'application/x-www-form-urlencoded; charset=UTF-8',json: 'application/json; charset=UTF-8' }

2. api 配置

rush:js;"> // filename: api-sdk-conf.js import contentType from './content-type' export default { baseURL: 'http://192.168.40.231:30412',apis: [ { name: 'login',path: '/api/security/login?{{id}}',method: 'post',contentType: contentType.formData,status: { 401: '用户名或者密码错误' } } ] }

3. request.js 方法

{ api[item.name] = { url: apiConf.baseURL + item.path,method: item.method,status: item.status,contentType: item.contentType,fire: fire } }) export default api

4. 在组件中使用

rush:js;"> import api from '@/apis/request' ... api.login.fire({id: '?heiheihei'},{ username: 'admin',password: 'admin',namespace: '_system' }) ...

浏览器结果:

rush:plain;"> Request URL:http://192.168.40.231:30412/api/security/login??heiheihei Request Method:POST Status Code:200 OK Remote Address:192.168.40.231:30412 Referrer Policy:no-referrer-when-downgrade POST /api/security/login??heiheihei HTTP/1.1 Host: 192.168.40.231:30412 Connection: keep-alive Content-Length: 47 Accept: application/json,text/plain,*/* Origin: http://localhost:8080 contentType: application/x-www-form-urlencoded; charset=UTF-8 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/62.0.3202.94 Safari/537.36 Content-Type: application/x-www-form-urlencoded Referer: http://localhost:8080/ Accept-Encoding: gzip,deflate Accept-Language: zh-CN,zh;q=0.9,en;q=0.8 username=admin&password=admin&namespace=_system

5. 更多

有个地方我不是很明白,希望懂的人可以给我解答一下

如果某个组件中只需要login方法,但是我这样写会报错。

rush:js;"> import {login} from '@/apis/request'

这样写的前提是要在request.js最后写上

rush:js;"> export var login = api.login

但是这是我不想要的,因为每次增加一个接口,这里都要export一次, 这不符合开放闭合原则,请问有什么更好的方法吗?

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对小编的支持。

24_ajax请求_使用axios

24_ajax请求_使用axios

前置说明:

  1.React本身只关注页面,并不包含发送ajax请求的代码

  2.前端应用需要通过ajax请求与后台进行交互(json数据)

  3.React应用中需要集成第三方ajax库(或自己进行封装)

常用的ajax库:

  1.jQuery:比较重,为了发送ajax请求而引用整个文件(不建议使用)

  2.axios:轻量级,建议使用!

    a.封装了XmlHttPRequest对象的ajax

    b.promise风格

    c.可以用在浏览器端和node服务器端

  3.fetch:原生函数,但老版本浏览器不支持

    a.不再使用XmlHttPRequest对象提交ajax请求

    b.为了兼容低版本的浏览器,可以引入兼容库fetch.js

代码:

  //其中的地址貌似访问不到了

<!DOCTYPE html>
<html lang="en">
<head>
    <Meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div id="example"></div>
<script type="text/javascript" src="../js/react.development.js"></script>
<script type="text/javascript" src="../js/react-dom.development.js"></script>
<script type="text/javascript" src="../js/babel.min.js"></script>
<script type="text/javascript" src="https://cdn.bootcss.com/axios/0.19.0-beta.1/axios.js"></script>
<script type="text/babel">
    /*
    * 需求:
    *    1.界面效果如下
    *    2.根据指定的关键字在github上搜索匹配的最受关注的库
    *    3.显示库名,点击链接查看库
    *    4.测试接口:https://api.github.com/search/repositories?q=r&sort=stars
    */
    class MostStarRepo extends React.Component {
        state = {
            repoName: ‘‘,repoUrl: ‘‘
        }

        //在这里发送异步ajax请求
        componentDidMount() {
            //使用axios发送
            const url = `https://api.github.com/search/repositories?q=r&sort=stars`;
            //因为是promise风格的,所以后面可以使用.then()
            axios.get(url).then(response => {
                //数据就在reponse里面
                const result = response.data
                //使用解构得到想要的数据
                const {name,html_url} = result.items[0];
                //更新状态
                this.setState({repoName: name,repoUrl: html_url})
            })
        }

        render() {
            const {repoName,repoUrl} = this.state
            if (!repoName) {
                return <h2>LOADING......</h2>
            } else {
                return <h2>Most star repo is <a href={repoUrl}>{repoName}</a></h2>
            }
        }

    }

    ReactDOM.render(<MostStarRepo/>,document.getElementById(‘example‘));
</script>
</body>
</html>

ajax 第十三节 AJAX-Axios (通用方法) 函数发送AJAX请求 04:36

ajax 第十三节 AJAX-Axios (通用方法) 函数发送AJAX请求 04:36

 

 

<!DOCTYPE html> <html lang="en">
<head>     <Meta charset="UTF-8">     <Meta http-equiv="X-UA-Compatible" content="IE=edge">     <Meta name="viewport" content="width=device-width, initial-scale=1.0">
    <script crossorigin="anonymous" src="https://cdn.bootcdn.net/ajax/libs/axios/0.21.1/axios.js"></script>     <title>Document</title> </head>
<body>     <button>GET</button>     <button>POST</button>     <button>AJAX</button> </body> <script>     const btns = document.querySelectorAll(''button'');     //设置baseURL     axios.defaults.baseURL = ''http://127.0.0.1:8000''     btns[0].onclick = function () {         //get请求         axios.get(''/axios-server'', {             //usr 参数             params: {                 id: 100,                 vip: 7             },             //请求头信息             headers: {                 name: ''DX3'',                 age: 20             }         }).then(response => {             console.log(response);         })     }
    btns[1].onclick = function () {         //post请求,第一个参数是url,第二个参数是请求体,第三个参数是其它         axios.post(''/axios-server'', {             username: ''admin'',             pwssword: ''admin''         }, {             //usr 参数             params: {                 id: 100,                 vip: 7             },             //请求头信息             headers: {                 height: ''DX3'',                 weight: 20             }         })     }
    btns[2].onclick = function () {         axios({             method: ''post'',             url: ''/axios-server'',             params: {                 vip: 10,                 level: 30             },             headers: {                 a: 10,                 b: 20             },             data: {                 username: ''admin'',                 password: ''admin''             }         }).then(response => {             console.log(response);             //响应状态码             console.log(response.status);             //响应状态字符串             console.log(response.status.Text);             //响应头信息             console.log(response.headers);             //响应体             console.log(response.data);         })     }
</script>
</html>   ===========server.js===========   //引用 express const { request, response, json } = require(''express''); const express = require(''express'');
//创建应用对象 const app = express();
//创建路由规则, // request 是对请求报文的封装 // response 是对响应报文的封装 //app.all 可以接收任意类型的请求头
app.all(''/axios-server'', (request, response) => {     //设置响应头,设置充许跨域     response.setHeader(''Access-Control-Allow-Origin'', ''*'');     response.setHeader(''Access-Control-Allow-Headers'', ''*'');     const data = { name: ''xiaoming'', age: ''18'' };     //setTimeout(() => {     response.send(JSON.stringify(data));     //}, 3000);

})

// 监听端口启动服务 app.listen(8000, () => {     console.log(''服务已经启动,8000端口监听中.......''); })

ajax 第十二节 AJAX-Axios发送AJAXget,post请求

ajax 第十二节 AJAX-Axios发送AJAXget,post请求

1、axios 发送 ajax get 请求 (第一个参数 usr,第二个其它)

 

 

 

 

<!DOCTYPE html> <html lang="en">
<head>     <Meta charset="UTF-8">     <Meta http-equiv="X-UA-Compatible" content="IE=edge">     <Meta name="viewport" content="width=device-width, initial-scale=1.0">
    <script crossorigin="anonymous" src="https://cdn.bootcdn.net/ajax/libs/axios/0.21.1/axios.js"></script>     <title>Document</title> </head>
<body>     <button>GET</button>     <button>POST</button>     <button>AJAX</button> </body> <script>     const btns = document.querySelectorAll(''button'');     //设置baseURL     axios.defaults.baseURL = ''http://127.0.0.1:8000''     btns[0].onclick = function () {         //get请求         axios.get(''/axios-server'', {             //usr 参数             params: {                 id: 100,                 vip: 7             },             //请求头信息             headers: {                 name: ''DX3'',                 age: 20             }         }).then(response => {             console.log(response);         })     }
    btns[1].onclick = function () {         //post请求,第一个参数是url,第二个参数是请求体,第三个参数是其它         axios.post(''/axios-server'', {             username: ''admin'',             pwssword: ''admin''         }, {             //usr 参数             params: {                 id: 100,                 vip: 7             },             //请求头信息             headers: {                 height: ''DX3'',                 weight: 20             }         })     } </script>
</html>

2、axios 发送 post 请求 ( 第一个参数(usr),第二个参数(请求体),第三个参数(其它))

 

 =============服务端响应 server.js=============

 

//引用 express const { request, response, json } = require(''express''); const express = require(''express'');
//创建应用对象 const app = express();
//创建路由规则, // request 是对请求报文的封装 // response 是对响应报文的封装 //app.all 可以接收任意类型的请求头
app.all(''/axios-server'', (request, response) => {     //设置响应头,设置充许跨域     response.setHeader(''Access-Control-Allow-Origin'', ''*'');     response.setHeader(''Access-Control-Allow-Headers'', ''*'');     const data = { name: ''xiaoming'', age: ''18'' };     //setTimeout(() => {     response.send(JSON.stringify(data));     //}, 3000);

})

// 监听端口启动服务 app.listen(8000, () => {     console.log(''服务已经启动,8000端口监听中.......''); })

AJAX---Axios发送AJAX请求

AJAX---Axios发送AJAX请求

        const btns = document.querySelectorAll(''button'');

        //配置 baseURL
        axios.defaults.baseURL = ''http://127.0.0.1:8000'';

        btns[0].onclick = function () {
            //GET 请求
            axios.get(''/axios-server'', {
                //url 参数
                params: {
                    id: 100,
                    vip: 7
                },
                //请求头信息
                headers: {
                    name: ''atguigu'',
                    age: 20
                }
            }).then(value => {
                console.log(value);
            });
        }

        btns[1].onclick = function () {
            axios.post(''/axios-server'', {
                username: ''admin'',
                password: ''admin''
            }, {
                //url 
                params: {
                    id: 200,
                    vip: 9
                },
                //请求头参数
                headers: {
                    height: 180,
                    weight: 180,
                }
            });
        }

 

今天关于axios进阶实践之利用最优雅的方式写ajax请求ajax如何写的讲解已经结束,谢谢您的阅读,如果想了解更多关于24_ajax请求_使用axios、ajax 第十三节 AJAX-Axios (通用方法) 函数发送AJAX请求 04:36、ajax 第十二节 AJAX-Axios发送AJAXget,post请求、AJAX---Axios发送AJAX请求的相关知识,请在本站搜索。

本文标签: