日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

vue 調用 RESTful風格接口操作

瀏覽:164日期:2022-12-10 08:27:54

首先是簡單的java接口代碼

寫了四個讓前端請求的接口,以下為代碼

@GetMapping('/v1/user/{username}/{password}') public Result login2(@PathVariable('username') String username, @PathVariable('password') String password){ return Result.succResult(200,username+'--'+password); } @PostMapping('/v1/user') public Result login3(@RequestBody User user){ return Result.succResult(200,'ok',user); } @PutMapping('/v1/user') public Result putUser(@RequestBody User user){ return Result.succResult(200,user); } @DeleteMapping('/v1/user/{id}') public Result delete(@PathVariable Integer id){ return Result.succResult(200,id); }

前端請求需要在main.js中配置

import Axios from ’axios’ Vue.prototype.$axios = Axios

前端請求方式如下

在調用的時候用以下方式進行請求

this.$axios.get(’/api/v1/user/’+this.username+’/’+this.password).then(data=> { alert(’get//’+data.data.code);}).catch(error=> { alert(error);}); this.$axios.get(’/api/v1/user’,{params: { username: this.username, password: this.password} }).then(data =>{alert(’get’+data.data.data) }).catch(error => {alert(error) }); this.$axios.put(’/api/v1/user’,{id: 1,username: this.username,password: this.password }).then(data => {alert(’數據password:’+data.data.data.password)alert(’數據username:’+data.data.data.username) }).catch(error => {alert(error) }); this.$axios.delete(’/api/v1/user/1’).then(data=> { alert(’delete//’+data.data.code);}).catch(error=> { alert(error);}); this.$axios.post(’/api/v1/user’,{username: this.username,password: this.password }).then(data => { alert(’post’+data.data.data.password) }).catch(error => {alert(error); });

補充知識:vue結合axios封裝form,restful,get,post四種風格請求

axios特點

1.從瀏覽器中創建 XMLHttpRequests

2.從 node.js 創建 http 請求

3.支持 Promise API

4.攔截請求和響應 (就是有interceptor)

5.轉換請求數據和響應數據

6.取消請求

7.自動轉換 JSON 數據

8.客戶端支持防御 XSRF

安裝

npm i axios?savenpm i qs --savenpm i element-ui --savenpm i lodash --save

引入

1.在入口文件中引入所需插件

main.js

import Vue from ’vue’import App from ’./App.vue’import router from ’./router’import store from ’./store’import ElementUI from ’element-ui’;import ’element-ui/lib/theme-chalk/index.css’;import url from ’./apiUrl’import api from ’./apiUtil’Vue.prototype.$axios = api.generateApiMap(url);Vue.config.productionTip = falseVue.use(ElementUI);new Vue({ router, store, render: h => h(App)}).$mount(’#app’)

2.新建一個util文件夾(只要存放工具類)

在util中建apiUtil.js , apiUrl.js兩個文件

apiUtil.js 封裝請求體

import axios from ’axios’import _ from ’lodash’import router from ’@/util/baseRouter.js’import { Message } from ’element-ui’import qs from ’qs’const generateApiMap = (map) => { let facade = {} _.forEach(map, function (value, key) { facade[key] = toMethod(value) }) return facade}//整合配置const toMethod = (options) => { options.method = options.method || ’post’ return (params, config = {}) => { return sendApiInstance(options.method, options.url, params, config) }}// 創建axios實例const createApiInstance = (config = {}) => { const _config = { withCredentials: false, // 跨域是否 baseURL: ’’, validateStatus: function (status) { if(status != 200){ Message(status+’:后臺服務異常’) } return status; } } config = _.merge(_config, config) return axios.create(config)}//入參前后去空格const trim = (param) =>{ for(let a in param){ if(typeof param[a] == 'string'){ param[a] = param[a].trim(); }else{ param = trim(param[a]) } } return param}//restful路徑參數替換const toRest = (url,params) => { let paramArr = url.match(/(?<={).*?(?=})/gi) paramArr.forEach(el=>{ url = url.replace(’{’+el+’}’,params[el]) }) return url}//封裝請求體const sendApiInstance = (method, url, params, config = {}) => { params = trim(params) if(!url){ return } let instance = createApiInstance(config) //響應攔截 instance.interceptors.response.use(response => { let data = response.data //服務端返回數據 let code = data.meta.respcode //返回信息狀態碼 let message = data.meta.respdesc //返回信息描述 if(data === undefined || typeof data != 'object'){ Message(’后臺對應服務異常’); return false; }else if(code != 0){ Message(message); return false; }else{ return data.data; } }, error => { return Promise.reject(error).catch(res => { console.log(res) }) } ) //請求方式判斷 let _method = ’’; let _params = {} let _url = ’’ if(method === ’form’){ _method = ’post’ config.headers = {’Content-Type’:’application/x-www-form-urlencoded’} _params = qs.stringify(params) _url = url }else if(method === ’resetful’){ _method = ’get’ _params = {} _url = toRest(url,params) }else if(method === ’get’){ _method = ’get’ _params = { params: params } _url = url }else if(method === ’post’){ _method = ’post’ _params = params _url = url }else{ Message(’請求方式不存在’) } return instance[_method](_url, _params, config)}export default { generateApiMap : generateApiMap}

apiUrl.js 配置所有請求路徑參數

其中resetful風格請求的路徑中的請求字段必須寫在 ‘{}’中

const host= ’/api’ //反向代理export default { userAdd:{ url: host + '/user/add', method:'post' }, userList:{ url: host + '/user/userList', method:'get' }, userInfo:{ url: host + '/user/userInfo/{id}/{name}', method:'resetful'}, userInsert:{ url: host + '/login', method:'form'},}

使用

四種請求方式的入參統一都以object形式傳入

APP.vue

<template> <div class='login'> <el-button type='primary' @click='submitForm' class='submit_btn'>登錄</el-button> </div></template><script>export default { data() { return { }; }, methods:{ submitForm(){ this.$axios.userAdd({ id:’123’, name:’liyang’ }).then(data=>{ console.log(data) }) } }};</script>

ps:入參也可以再請求interceptors.request中封裝

以上這篇vue 調用 RESTful風格接口操作就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Vue
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
欧美日韩国产一区二区在线观看| 国产精品美女久久久| 特黄毛片在线观看| 99国产精品私拍| 天堂成人免费av电影一区| 麻豆精品网站| 视频一区二区三区中文字幕| 日韩精品一级中文字幕精品视频免费观看 | 亚洲免费精品| 99日韩精品| 日本成人精品| 天堂√8在线中文| 日韩在线观看一区二区| 欧美久久香蕉| 久久一区二区三区电影| 亚洲精品乱码| 水蜜桃精品av一区二区| 桃色一区二区| 日本不卡视频在线观看| 欧美亚洲一级| 亚洲成人精品| 亚洲区第一页| 成人日韩在线观看| 欧美另类中文字幕| 亚洲性图久久| 国产一区国产二区国产三区| 三上悠亚国产精品一区二区三区| 人人爽香蕉精品| 成人午夜网址| 日韩精品亚洲aⅴ在线影院| 亚洲成人va| 精品精品久久| 五月亚洲婷婷 | 首页欧美精品中文字幕| 精品中文字幕一区二区三区四区| 三级欧美在线一区| 99国产精品| 日韩一级精品| 午夜国产精品视频| 91精品国产调教在线观看| 成人午夜网址| 国产精品成人一区二区不卡| 国产精品视频一区二区三区| 日韩精品五月天| 亚洲高清久久| 欧美在线影院| 蜜桃久久av| 日韩欧美2区| 91精品丝袜国产高跟在线| 中文字幕成人| 免费观看在线色综合| 99在线|亚洲一区二区| 久久国产小视频| 樱桃成人精品视频在线播放| 欧美午夜不卡| 精品欧美激情在线观看| 欧美 日韩 国产精品免费观看| 亚洲国产专区校园欧美| 精品欧美久久| 欧美一区三区| 国产亚洲在线观看| 日韩和欧美一区二区| 国产欧美日韩精品高清二区综合区 | 国产成人精品一区二区三区视频| 国产劲爆久久| 国产极品一区| 免费精品国产| 国产欧美一区二区精品久久久| 荡女精品导航| 亚洲激情偷拍| 国产亚洲电影| 欧美精品一区二区久久| 欧美一区二区三区免费看| 日韩1区在线| 亚洲精品系列| 欧洲激情综合| 国产一区一一区高清不卡| 夜久久久久久| 国产精品成久久久久| 日韩影院精彩在线| 青草综合视频| 久久青草久久| 国产精品资源| 国产精品人人爽人人做我的可爱| 国产欧美日韩精品一区二区免费| 亚洲高清二区| 成人在线观看免费视频| 日韩午夜一区| 国产传媒在线| 国产乱人伦丫前精品视频| 亚洲一区成人| 欧美精品一区二区久久| 97精品视频在线看| 精品一区二区三区免费看 | 久久不卡日韩美女| 日本欧美在线看| 国产亚洲综合精品| 成人欧美一区二区三区的电影| 国产精品最新自拍| 日韩精品久久理论片| 亚洲伊人精品酒店| 一区二区日韩免费看| 日本大胆欧美人术艺术动态| 日韩亚洲在线| 人人爽香蕉精品| 蜜桃av一区二区| 蜜臀久久久99精品久久久久久| 国产视频一区在线观看一区免费| 日韩一区三区| 国产精品一区二区三区美女| 国产精品对白久久久久粗| 国产欧美久久一区二区三区| 人人精品久久| 久久av中文| 色一区二区三区| 黑丝一区二区三区| 亚洲精品99| 日韩激情一区二区| 丰满少妇一区| 国产精品久久久久av电视剧| 欧美日韩一区二区综合| 国产精品一区二区三区av| 欧美在线首页| 日韩精品永久网址| 日本va欧美va精品发布| 国产精品免费不| 日韩久久一区二区三区| 欧美综合二区| 福利一区二区| 免费的成人av| 精品五月天堂| 亚洲我射av| 免费日韩成人| 91精品在线观看国产| 亚洲a成人v| 欧美不卡在线| 福利精品一区| 日韩国产精品久久久久久亚洲| 久久精品青草| 老牛国产精品一区的观看方式| 国产91在线播放精品| 亚洲三级精品| 蜜臀久久久久久久| 欧美特黄一级大片| 国产在线观看91一区二区三区| 亚洲一区二区三区中文字幕在线观看 | 欧美1区2区3| 日韩国产在线观看| 免费欧美在线视频| 亚洲午夜精品久久久久久app| 精品网站999| 午夜在线播放视频欧美| 久久夜夜操妹子| 国产91在线精品| 精品国产乱码久久久久久樱花| 97精品久久| 欧美亚洲综合视频| 亚洲精品九九| 亚州欧美在线| 欧美一区91| 久久超级碰碰| 日韩av片子| 91精品国产成人观看| 1024精品久久久久久久久| 在线看片日韩| 青青青免费在线视频| 激情欧美一区| 国产欧美日韩| 蜜臀91精品国产高清在线观看| 国产探花一区二区| 性欧美xxxx免费岛国不卡电影| 欧美中文高清| 亚洲一区亚洲| 日韩精品电影| 免费一级欧美在线观看视频 | 99精品美女| 99久久亚洲精品蜜臀| 亚洲精品无播放器在线播放| 亚洲理论在线| 91麻豆精品激情在线观看最新| 中文字幕日本一区| 好看的av在线不卡观看| sm捆绑调教国产免费网站在线观看| 亚洲视频www| 欧美成人基地| 国产精品巨作av| 中文在线不卡| 福利视频一区| 国产激情综合| 首页欧美精品中文字幕| av高清不卡| 激情久久久久久久| 色在线视频观看| 亚洲综合婷婷| 国产高潮在线| 亚洲不卡av不卡一区二区| 精品一区av| 欧美日韩一区自拍| 国产精品三p一区二区| av最新在线|