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

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

vue 調(diào)用 RESTful風(fēng)格接口操作

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

首先是簡(jiǎn)單的java接口代碼

寫(xiě)了四個(gè)讓前端請(qǐng)求的接口,以下為代碼

@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); }

前端請(qǐng)求需要在main.js中配置

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

前端請(qǐng)求方式如下

在調(diào)用的時(shí)候用以下方式進(jìn)行請(qǐng)求

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(’數(shù)據(jù)password:’+data.data.data.password)alert(’數(shù)據(jù)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); });

補(bǔ)充知識(shí):vue結(jié)合axios封裝form,restful,get,post四種風(fēng)格請(qǐng)求

axios特點(diǎn)

1.從瀏覽器中創(chuàng)建 XMLHttpRequests

2.從 node.js 創(chuàng)建 http 請(qǐng)求

3.支持 Promise API

4.攔截請(qǐng)求和響應(yīng) (就是有interceptor)

5.轉(zhuǎn)換請(qǐng)求數(shù)據(jù)和響應(yīng)數(shù)據(jù)

6.取消請(qǐng)求

7.自動(dòng)轉(zhuǎn)換 JSON 數(shù)據(jù)

8.客戶(hù)端支持防御 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.新建一個(gè)util文件夾(只要存放工具類(lèi))

在util中建apiUtil.js , apiUrl.js兩個(gè)文件

apiUtil.js 封裝請(qǐng)求體

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) }}// 創(chuàng)建axios實(shí)例const createApiInstance = (config = {}) => { const _config = { withCredentials: false, // 跨域是否 baseURL: ’’, validateStatus: function (status) { if(status != 200){ Message(status+’:后臺(tái)服務(wù)異常’) } return status; } } config = _.merge(_config, config) return axios.create(config)}//入?yún)⑶昂笕タ崭馽onst 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路徑參數(shù)替換const toRest = (url,params) => { let paramArr = url.match(/(?<={).*?(?=})/gi) paramArr.forEach(el=>{ url = url.replace(’{’+el+’}’,params[el]) }) return url}//封裝請(qǐng)求體const sendApiInstance = (method, url, params, config = {}) => { params = trim(params) if(!url){ return } let instance = createApiInstance(config) //響應(yīng)攔截 instance.interceptors.response.use(response => { let data = response.data //服務(wù)端返回?cái)?shù)據(jù) let code = data.meta.respcode //返回信息狀態(tài)碼 let message = data.meta.respdesc //返回信息描述 if(data === undefined || typeof data != 'object'){ Message(’后臺(tái)對(duì)應(yīng)服務(wù)異常’); return false; }else if(code != 0){ Message(message); return false; }else{ return data.data; } }, error => { return Promise.reject(error).catch(res => { console.log(res) }) } ) //請(qǐng)求方式判斷 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(’請(qǐng)求方式不存在’) } return instance[_method](_url, _params, config)}export default { generateApiMap : generateApiMap}

apiUrl.js 配置所有請(qǐng)求路徑參數(shù)

其中resetful風(fēng)格請(qǐng)求的路徑中的請(qǐng)求字段必須寫(xiě)在 ‘{}’中

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'},}

使用

四種請(qǐng)求方式的入?yún)⒔y(tǒng)一都以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:入?yún)⒁部梢栽僬?qǐng)求interceptors.request中封裝

以上這篇vue 調(diào)用 RESTful風(fēng)格接口操作就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Vue
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩免费av| 久久久久久色| 国产欧美日韩在线一区二区 | 精品国产一区二| 欧美激情99| 成人污污视频| 日韩欧美二区| 欧美 日韩 国产精品免费观看| 99精品视频在线观看免费播放| 久久精品亚洲人成影院| 久久麻豆精品| 鲁大师成人一区二区三区| 久久国产高清| 91亚洲精品在看在线观看高清| 国产欧美一区二区色老头| 久久av影视| 91综合网人人| 久久久久免费av| 黄色亚洲在线| 亚洲三区欧美一区国产二区| 日韩av午夜在线观看| 国产精品久久久免费| 国模精品一区| 免费欧美一区| 亚洲不卡视频| 久久亚洲黄色| 欧美成人亚洲| 亚洲欧美网站在线观看| 国产极品久久久久久久久波多结野| 日本精品黄色| 婷婷亚洲综合| 亚洲美女久久| 久久精品日韩欧美| 国产一区清纯| 国产午夜久久av| 久久久久99| 日韩在线黄色| 日韩电影免费网站| 日韩一区欧美二区| 欧美精品二区| 91精品观看| 欧美日韩99| 日韩免费福利视频| 免费成人在线观看| 久久精品三级| 国产精品婷婷| 国产人成精品一区二区三| 日韩精品dvd| 蜜臀精品久久久久久蜜臀 | 麻豆成人综合网| 亚洲大全视频| 欧美日韩午夜电影网| 91亚洲人成网污www| 蜜桃久久久久久| 中文字幕高清在线播放| 欧美中文日韩| 国产欧美高清| 9国产精品视频| 另类小说一区二区三区| 欧美日韩国产高清| 美女视频黄免费的久久| 在线亚洲自拍| 欧美www视频在线观看| 午夜在线一区二区| 97精品国产一区二区三区| 亚洲不卡视频| 99精品综合| 麻豆精品视频在线观看视频| 亚洲欧美日本国产专区一区| 精品国产a一区二区三区v免费| 日本欧美在线看| av在线资源| 国产精品任我爽爆在线播放| 夜久久久久久| 亚洲深夜视频| 国产精品免费大片| 一区二区电影| 99久久久国产精品美女| 精品视频自拍| 国产日韩亚洲| 中文字幕免费精品| 婷婷激情久久| 激情久久99| 国产伦理久久久久久妇女| 美国三级日本三级久久99 | 日韩欧美中文字幕电影| 野花国产精品入口| 久草免费在线视频| 鲁大师精品99久久久| 日本免费新一区视频| 欧美特黄一区| 99久久久久| 国产资源在线观看入口av| 久久的色偷偷| 国产欧美日韩视频在线| 日本中文字幕一区二区视频| av成人国产| 久久麻豆精品| 日韩中文首页| 精品少妇av| 美女性感视频久久| 国产精品资源| 日本不卡视频一二三区| 亚洲在线免费| 美女久久久久| 国产中文一区| 久久久一二三| 少妇久久久久| 日韩精品看片| 久久久久久久久丰满| 日本免费一区二区三区四区| 国产在线一区不卡| 久久中文欧美| 欧美国产中文高清| 久久精品资源| 精品免费av| 久久精品国产久精国产| 国产乱码精品一区二区亚洲| 欧美日韩xxxx| 国产欧美日韩一区二区三区四区| 欧美一区=区三区| 91精品国产自产观看在线| 日本视频在线一区| 国产免费av一区二区三区| 国产精品2区| 成人污污视频| 久久久久.com| 五月综合激情| 性欧美长视频| 视频精品一区| 国产欧美日韩精品一区二区免费 | 日韩1区2区| 日韩电影在线视频| 今天的高清视频免费播放成人| 欧洲激情综合| 亚洲男女自偷自拍| 日韩精品免费视频人成| 欧美日本三区| 久久99高清| 亚洲伊人av| 久久一区二区中文字幕| 99pao成人国产永久免费视频| 99xxxx成人网| 亚洲人成精品久久久| 日韩精品视频中文字幕| 国产精品亚洲人成在99www | 国产欧美一区二区三区精品酒店 | 日韩动漫一区| 开心激情综合| 999国产精品| 免播放器亚洲一区| 国产美女久久| 日本精品不卡| 在线一区电影| 日本不卡视频一二三区| 精品国产乱码| 亚洲激情欧美| 国产精品视频一区视频二区| 日韩一区电影| 中文字幕日韩高清在线| 另类小说一区二区三区| 香蕉人人精品| 日本aⅴ亚洲精品中文乱码 | 深夜日韩欧美| 色婷婷色综合| 香蕉精品视频在线观看| 日韩av网站免费在线| 国产精品99一区二区三区| 黄色精品网站| 久久av资源| 日韩视频二区| 国产福利一区二区三区在线播放| 色在线视频观看| 亚洲专区视频| 国内自拍视频一区二区三区| 伊人久久大香线蕉av超碰演员| 日韩高清二区| 三级精品视频| 欧美午夜网站| 欧美在线资源| 国产麻豆精品久久| 欧美精品一区二区久久| 国产精品主播| 欧美日韩国产在线一区| 国产精品久久久网站| 精品中文一区| 欧美经典一区| 久久国产精品久久久久久电车| 精品一区二区三区的国产在线观看 | 激情不卡一区二区三区视频在线| 国产精品日韩| 国产精品成人a在线观看| 日本大胆欧美人术艺术动态| 四虎成人av| 日韩国产在线观看| 999久久久精品国产| 国产精品a久久久久| 国产精品毛片在线看| 欧美国产美女| 日本一区二区三区中文字幕|