1. Why do packaging?Facilitates overall code calling, public processing of requests, and personalized customization 2. Others have already encapsulated a lot, why not just modify and use it?
3. Personal packaging demoCode structure [based on vue] Basic idea Store all request interface addresses by module according to files, such as request/module/user user information related module [service] 2. Encapsulation methods and classes. Bind common request methods to all requests and process path parameters on the request URL generateServer.js import server from "../util/axiosConfig"; // Modify the basic configuration of axios and request configuration function request({ url, method = "get", queryParm = {}, body = {}, pathParm = null, config = {}, }) { const configAxios = { method, ...config, url: dealRequestUrl(url, pathParm), }; switch (method) { case "get": configAxios.params = queryParm; break; default: // Request methods 'PUT', 'POST', and 'PATCH' configAxios.data = body; break; } console.log('configAxios', configAxios) return server(configAxios); } function dealRequestUrl(url, pathParm) { if (!pathParm) return url; let dealurl = url; Object.keys(pathParm).forEach((ele) => { dealurl = dealurl.replace(`{${ele}}`, pathParm[ele]); }); return dealurl; } class GenerateServer { constructor(url) { this.url = url; } getdata(parm) { console.log('parm', parm) return request({ ...parm, method: "get", url: this.url }); } postdata(parm) { return request({ ...parm, method: "post", url: this.url }); } deletedata(parm) { return request({ ...parm, method: "delete", url: this.url }); } } export default GenerateServer; 3. Expose the whole use import { userInfoServer } from "./request"; . . . // Send request userInfoServer.getUserName .getdata({ queryParm: { id: 223, }, }) .then((res) => { console.log("res", res); }); // Send request userInfoServer.getUserName .postdata({ body: { id: 223, }, }) .then((res) => { console.log("res", res); }); // Send a get request with the request path containing the parameter userInfoServer.getUserList .getdata({ queryParm: { id: 223, }, pathParm: { id: 567, }, }) .then((res) => { console.log("res", res); }); Summarize:The above encapsulation is mainly to split the request in a more detailed way to facilitate maintenance. It is also more convenient during development. For new interface requirements, you only need to add URl configuration and response generator configuration in the corresponding module. Then you can process the request in the business code. The path parameters and request body parameters are encapsulated, so you don't need to worry about the corresponding configuration when using them. The above code does not handle file uploads, get request parameter strings, etc. But just add configuration in the corresponding axios. Easy to maintain. This is the end of this article about Axios secondary packaging in the project. For more relevant Axios secondary packaging content, please search for previous articles on 123WORDPRESS.COM or continue to browse the following related articles. I hope everyone will support 123WORDPRESS.COM in the future! Code git: git You may also be interested in:
|
<<: Detailed explanation of how to install PHP7 on Linux
>>: In-depth explanation of the maximum value of int in MySQL
Installation The required documents are provided ...
Checkboxes are very common on web pages. Whether ...
Error message: Store update, insert, or delete st...
Welcome to the previous canvas game series: 《VUE ...
I have been playing around with charts for a whil...
I have recently been developing a visual operatio...
Process structure diagram Nginx is a multi-proces...
The display without the effect picture is just em...
count script #!/bin/sh numOfArgs=$# if [ $numOfAr...
Recently I wrote in my blog that in the project l...
Table of contents 1. Ant Design Vue 1. Official w...
1. Problem symptoms Version: MySQL 5.6, using the...
You must have inspiration to design a website. Goo...
When creating a tomcat server on a local eclipse,...
When it comes to bionic design, many people will t...