Vue 학습 노트-앞 뒤 대화
48359 단어 Vue 학습
목표:
1.앞 뒤 대화 모드
1.1 인터페이스 호출 방식
원생 Ajax
1.2 URL 주소 형식
1.전통 적 인 URL 형식:schema:/host:port/path?query\#fragment
http://localhost:3000/index/123
2.Promise 사용법
Promise 는 하나의 대상(방법 도)
var p = new Promise(function(resolve,reject){
// resolve()
// reject()
});
p.then(function(ret){
// resolve
},function(ret){
// reject
});
2.1 Promise 기반 Ajax 요청 처리
1.여러 번 요청 발송
function queryData(url){
// 1. promise
var p = new Promise(function(resolve,reject){
var xhr = new XMLHttpRequest();
//
xhr.onreadystatechange = function(){
if(xhr.readyState != 4) return;
if(xhr.readyState == 4 && xhr.status == 200){
// 2.
resolve(xhr.responseText);
}else{
// 3.
reject(' ');
}
};
xhr.open('get',url);
xhr.send(null); // null
});
return p;
}
queryData('http://localhost:3000/data')
.then(function(data){
console.log(data);
// return
return queryData('http://localhost:3000/data1');
})
.then(function(data){
return queryData('http://localhost:3000/data2');
})
.then(function(data){
console.log(data);
})
1.실례 방법
var p1=queryData('http://localhost:3000/a1');
var p2=queryData('http://localhost:3000/a2');
var p3=queryData('http://localhost:3000/a3');
Promise.all([p1,p2,p3]).then(function(result){
console.log(result);
})
Promise.race([p1,p2,p3]).then(function(result){
console.log(result);
})
3.인터페이스 호출-fetch 용법
3.1 개술
1.기본 특성
(그때 두 번)
fetch(url, options) .then(fn1) .then(fn2) … .catch(fn)
3.2 fetch 의 기본 용법
<script>
fetch('http://localhost:3000/fdata').then(function(data){
//text() fetchAPI 。 Promise ,
return data.text();
}).then(function(data){
// then
console.log(data);
})
</script>
3.3 fetch API 의 HTTP 요청
1.상용 설정 옵션
2.GET 요청 매개 변수(DELETE 요청 매개 변 수 는 이와 비슷 합 니 다)
/*
*/
<script type="text/javascript">
fetch('http://localhost:3000/books/14253',{
method:'get'
})
.then(function(data){
//text() fetchAPI 。 Promise ,
return data.text();
}).then(function(data){
// then
console.log(data);
})
</script>
/*
*/
app.get('/books/:id', (req, res) => {
res.send('Restful URL !' + req.params.id)
})
매개 변 수 를 가 져 오 려 면 req.params 를 사용 하 십시오.
3.POST 요청 파라미터
(PUT 요청 매개 변 수 는 이와 비슷 합 니 다)
<script type="text/javascript">
//
fetch('http://localhost:3000/books',{
method:'post',
body:'uname=xingxing&pwd=123',
headers:{
'Content-Type':'application/x-www-form-urlencoded',
}
}).then(data=>{
return data.text();
}).then(ret=>{
console.log(ret);
})
</script>
//json
fetch('http://localhost:3000/books', {
method: 'post',
body: JSON.stringify({
uname: ' ',
pwd: '456'
}),
headers: {
'Content-Type': 'application/json'
}
})
.then(function(data){
return data.text();
}).then(function(data){
console.log(data)
});
//
app.post('/books', (req, res) => {
res.send('post !' + req.body.uname+'======'+req.body.pwd)
})
app.put('/books/:id', (req, res) => {
res.send('put !' + req.body.uname+'======'+req.body.pwd)
})
json 형식 을 수정 해 야 합 니 다.(구체 적 으로 왜 아직 자세히 따 지지 않 았 는 지)my token 과 content-type 을 나 누 어 쓰 면 덮어 쓰 는 것 같 습 니 다.이 코드 는 res.header('Access-Control-Allow-Headers',['my token','Content-Type'])입 니 다.
3.3 fetch 응답 결과
응답 데이터 형식
fetch('http://localhost:3000/booksjson').then(function(data){
return data.json();
// return data.text();
}).then(function(data){
console.log(data)
// console.log(typeof data)
// var obj = JSON.parse(data);
// console.log(obj.uname,obj.age,obj.gender)
})
// :
app.get('/booksjson', (req, res) => {
res.json({
uname: 'lili',
age: 13,
gender: 'female'
});
})
바로:백 엔 드 는 json 데이터 형식 을 되 돌려 줍 니 다.text()로 가 져 온 형식 이 문자열 형식 이 라면 json()으로 가 져 온 것 이 json 대상 이 라면,
백 엔 드 가 문자열 이 니 제 이 슨 에 사용 할 필요 없 겠 지?!필요 없어.
4.인터페이스 호출-axios 용법
4.1 axios 의 기본 특성
① axios 를 사용 하려 면 axios 라 이브 러 리 파일 ② 참조 코드 를 도입 해 야 합 니 다.
axios.get('http://localhost:3000/adata')
.then(function(ret){
// ret , ret data
//data ,
console.log(ret.data);
})
4.3 axios API 의 HTTP 요청
1.get 과 delete 요청 전달 매개 변수
axios.get("http://localhost:3000/axios?id=123")
.then(data=>{
console.log(data);
})
axios.get("http://localhost:3000/axios/123")
.then(data=>{
console.log(data.data);
})
axios.get("http://localhost:3000/axios",{
params:{
id:123
}
}).then(data=>{
console.log(data.data)
})
//
// url params req.query
app.get('/axios',(req,res)=>{
res.send('axios '+req.query.id);
})
app.get('/axios/:id',(req,res)=>{
res.send('axios resful '+req.params.id);
})
2.post 와 put 요청 전달 매개 변수
//
axios.post("http://localhost:3000/axios",{
uname:'jerry',
pwd:456
}).then(data=>{
console.log(data.data)
})
// :
const params = new URLSearchParams();
//
params.append('uname','zhangsan');
params.append('pwd','111');
axios.post("http://localhost:3000/axios",params).then(data=>{
console.log(data.data)
})
// :
app.post('/axios', (req, res) => {
res.send('axios post ' + req.query.uname + '---' + req.body.pwd)
})
4.3 axios 의 응답 결과
(배경 응답 에 대응 하 는 결과)
4.4 axios 전역 설정
4.4 axios 차단기
1.차단기 요청
보 내 달라 고 요청 하기 전에 메 시 지 를 설정 하 세 요.
//
axios.interceptors.request.use(function(config){
//
console.log(config.url);
config.headers.mytoken = 'nihao';
return config;
},function(err){
//
console.log(err);
});
axios.get('http://localhost:3000/adata').then(function(data){
console.log(data);
})
config 에서 설정(config 는 개체 에 해당)
2.응답 차단기
데 이 터 를 얻 기 전에 데 이 터 를 가공 처리 하 다.
axios.interceptors.response.use(function(res){
//
// 。 then , .data
console.log(res);
var data = res.data;
return data;
},function(err){
//
console.log(err);
});
형 삼 은 배경 에서 돌아 오 는 데이터 정 보 를 나타 낸다.대상 중의 data res 는 실제 데이터 가 아니 라 axios 에 포 함 된 대상 이다.대상 중의 data 를 통 해 실제 데 이 터 를 얻는다(배경 데 이 터 를 얻 는 것 과 같다)
5.인터페이스 호출-async/await 용법
참고 사례:
async function queryData(){
var ret = await new Promise(function(resolve,reject){
setTimeout(function(){
resolve('nihao');
},1000);
})
return ret;
}
queryData().then(result=>{
console.log(result);
});
여러 비동기 요청 처리
async function queryData(){
var info = await axios.get('async1');
var ret = await axios.get('async2/?info='+info.data);
return ret.data;
}
//
queryData().then(function(data){
console.log(data);
})