백엔드 개발을 위해 작성된 "vue3" 요청 백엔드 인터페이스

이 문서에서는 vue3 프런트엔드 프로젝트에서 데이터를 얻기 위해 백엔드 인터페이스를 요청하는 방법을 공유합니다. 비교적 간단하며 내용은 다음과 같습니다.
여기에 이미지 설명을 삽입하세요.

1. axios를 사용하여 백엔드 인터페이스 요청

먼저 npm에서 axios를 설치하고 axios 종속성을 추가한 후 이에 의존하여 백엔드 인터페이스를 요청합니다. 기본적으로 jquery를 사용하여 ajax를 보내는 것과 같습니다.

# src/main.js
import axios from 'axios'
import vueAxios from 'vue-axios'
createApp(App).use(ElementPlus).use(vueAxios,axios).mount("#app");

axios는 쉬운 호출을 위한 독립 라이브러리입니다. 여기서는 vue-axios를 사용하여 this.axios를 통해 백엔드 요청을 시작합니다. 백엔드 인터페이스는 그림과 같습니다.
여기에 이미지 설명을 삽입하세요.
axios를 통해 데이터를 얻은 후 이를 데이터 데이터에 할당하면 페이지는 표시할 데이터 데이터를 참조합니다.

<script>
export default{
    
    
    data(){
    
    
        return {
    
    
            signName: 'star',
            users: []
        }
    },
    methods:{
    
    
        getUsers(){
    
    
            this.axios.get('/api/getAllUsers')
                 .then((res)=>{
    
    
                    console.log(JSON.stringify(res.data.records))
                    this.users = res.data.records
                 })
                 .catch(function (error) {
    
     
                    console.log(error);
            });
        }
    },
    mounted () {
    
    
        this.getUsers()
  }
}
</script>

2. 프록시 구성

localhost:8787/getAllUsers에 직접 요청을 보내면 도메인 간 문제가 발생합니다. 일반적으로 프런트엔드와 백엔드가 별도로 배포되며, 서버 포트에 배포하더라도 도메인 간 문제가 있습니다(던지기를 고려하지 않음) 서버의 백엔드 반 분리 상황에 대한 프런트 엔드 dist).

vue.config.js 파일에서 프록시를 구성하고(새 프록시를 생성할 필요 없음) 로컬 경로 요청을 대상 주소로 전달하여 브라우저의 동일 출처 정책을 피할 수 있습니다. 동일한 출처는 브라우저의 제한 사항일 뿐이며, 크로스 도메인 백엔드에서도 여전히 요청 데이터를 받을 수 있습니다.

module.exports = {
    
    
  devServer: {
    
    
    port: 80,
    proxy: {
    
    
      '/api': {
    
    
        target: 'http://localhost:8787',
        secure: true,
        changeOrigin: true,
        pathRewrite: {
    
    
          '^/api': '',
        },
      }
    },
  },
}

3. 페이지 테이블 렌더링

마지막으로 요청한 데이터를 표시하기 위해 .vue를 작성합니다. 사용법은 이전 글과 동일합니다. 데이터가 있는 한 타사 컴포넌트를 통해 페이지 표시를 쉽게 표시할 수 있습니다. 여기서는 element-plus를 사용합니다. .

<template>
  <el-table :data="users" style="width: 100%">
    <el-table-column prop="id" label="编号" width="120" />
    <el-table-column prop="name" label="姓名" width="120" />
    <el-table-column prop="age" label="年龄" width="120" />
    <el-table-column prop="city" label="城市" />
  </el-table>
</template>

최종 효과는 다음과 같습니다.본 글을 참고하여 기대치와 불일치하는 부분이 있다면 이는 본 글의 오타임에 틀림없으며, 각 컴포넌트의 공식 문서도 참고하시기 바랍니다.
여기에 이미지 설명을 삽입하세요.

추천

출처blog.csdn.net/weixin_43275277/article/details/131778943