0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

axiosの書き方例

Posted at

階層構造例

プロジェクト名
│  .gitignore
│  index.html
│  output.txt
│  package-lock.json
│  package.json
│  postcss.config.js
│  README.md
│  tailwind.config.js
│  vite.config.js
│  
├─node_modules
│                  
├─public
│      favicon.ico
│      
└─src
    │  App.vue
    │  firebase.js
    │  index.css
    │  main.js
    │  
    ├─assets
    │      base.css
    │      logo.svg
    │      main.css
    │      
    ├─components
    │  │  Login.vue
    │  │  UserList.vue
    │  │  
    │  ├─icons
    │  │      IconCommunity.vue
    │  │      IconDocumentation.vue
    │  │      IconEcosystem.vue
    │  │      IconSupport.vue
    │  │      IconTooling.vue
    │  │      
    │  └─__tests__
    │          HelloWorld.spec.js
    │          
    ├─router
    │      index.js
    │      
    ├─services
    │      api.js
    │      
    ├─stores
    │      RecodeList.js
    │      
    └─views
            AboutView.vue
            Dashboard.vue
            Googale_Login.vue
            SideBar.vue
            styles.css

api.jsの例

// services/api.js

import axios from 'axios';

class ApiService {
    constructor() {
        this.api = axios.create({
            baseURL: import.meta.env.VITE_API_URL,
            headers: {
                'Content-Type': 'application/json',
                'Accept': 'application/json',
            },
        });
    }

    // ユーザーリスト取得メソッド
    async getUsers() {
        try {
            const response = await this.api.get(import.meta.env.VITE_USER_LIST, {
                withCredentials: true,
            });
            return response.data;
        } catch (error) {
            console.error('Error fetching users:', error);
            throw error;
        }
    }

    // スタッフリスト取得メソッド
    async getStaffs() {
        try {
            const response = await this.api.get(import.meta.env.VITE_STAFF_LIST, {
                withCredentials: true,
            });
            return response.data;
        } catch (error) {
            console.error('Error fetching staffs:', error);
            throw error;
        }
    }


    // 最近のサイドバー情報を取得する31件メソッド
    async getSideRecent() {
        try {
            const response = await this.api.get(import.meta.env.VITE_SIDEBAR_RECENT, {
                withCredentials: true,
                headers: {
                  'Content-Type': 'application/json',
                }
              });
            return response.data;
        } catch (error) {
            console.error('Error fetching recent sidebar info:', error);
            throw error;
        }
    }

    // 選択した1か月分の月のサイドバー情報を取得するメソッド
    async getSideByMonth(selectMonth) {
        try {

            const postData = { prev: '', month: selectMonth };
            const response = await this.api.post(import.meta.env.VITE_SIDEBAR_MONTH, postData, {
                withCredentials: true,
                headers: {
                  'Content-Type': 'application/json',
                }
              });
            return response.data;
        } catch (error) {
            console.error('Error fetching sidebar info for month:', error);
            throw error;
        }
    }

    // 選択した日付と名前の印刷に必要なデータ1件を取得するようにする
    async getPrint(sendrecode) {
        console.log('受け取った値',sendrecode);
        try {
            const postData = { id: sendrecode.user_id, date: sendrecode.day_key };
            const response = await this.api.post(import.meta.env.VITE_PRINT, postData, { withCredentials: true });
            return response.data;
        } catch (error) {
            console.error('Error fetching print data:', error);
            throw error;
        }
    }
        //-----------------------[追加保存処理]-------------------------------------------// 
        async postInputData(formData) {
            try {
                // 送信データの作成
                const dataToSend = {
                    form: formData,
                };
                console.log('送信するデータ', dataToSend);
                console.log('.envファイル読み込み確認 VITE_SAVE_DATA', import.meta.env.VITE_SAVE_DATA);
                console.log('envファイル VITE_API_HOME', import.meta.env.VITE_API_HOME);
                
                const response = await this.api.post(import.meta.env.VITE_SAVE_DATA, dataToSend);
                
                alert("データが保存されました!");
                console.log(response.data);
        
                return response; // 成功時に response オブジェクトを返す
            } catch (error) {
                console.error("保存中にエラーが発生しました", error);
                alert("保存に失敗しました");
                return error.response || error; // エラー時にも response またはエラーオブジェクトを返す
            }
        }
    //-------------------------------更新処理------------------------------------///
        async postUpdateData(formData) {
            try {
                // 送信データの作成
                const dataToSend = {
                    form: formData,
                };
                console.log('送信するデータ', dataToSend);
                console.log('.envファイル読み込み確認 VITE_API_UPDATE', import.meta.env.VITE_UPDATE);
                console.log('envファイル VITE_API_HOME', import.meta.env.VITE_API_HOME);
                
                const response = await this.api.post(import.meta.env.VITE_UPDATE, dataToSend);
                
                alert("データが更新されました!");
                console.log(response.data);
        
                return response; // 成功時に response オブジェクトを返す
            } catch (error) {
                console.error("更新中にエラーが発生しました", error);
                alert("更新に失敗しました");
                return error.response || error; // エラー時にも response またはエラーオブジェクトを返す
            }
        }

//-------------------------------------------------------------------//
// 選択した日付と名前からすでに保存しているデータが存在するか取得するメソッド
async getRecode(sendrecode) {
    console.log('受け取った値', sendrecode);
    try {
        const postData = { user_id: sendrecode.user_id, day_key: sendrecode.day_key };
        const response = await this.api.post(import.meta.env.VITE_GET_RECODE, postData, { withCredentials: true });

        console.log('レスポンス', response.data);
        // レスポンスでデータが存在するかを確認
        if (response.data) {
            return true;  // データが取得できた場合
        } else {
            return false; // データが存在しない場合
        }

    } catch (error) {
        console.error('Error fetching print data:', error);
        console.log('取得処理で例外のエラー');
        return false; // 取得に失敗した場合は false を返す
    }
}

//------------------------------------------------------------------//

    async getExcel_template(){

        const API_URL = import.meta.env.VITE_API_URL+import.meta.env.VITE_EXCEL_KANRI;

        try {
          const response = await axios.get(API_URL, {
            responseType: 'arraybuffer',
          });
    
          return response.data;
        } catch (error) {
          console.error('Error fetching the Excel file with ExcelJS:', error);
        }
    }

    //------------------------------------------------------------------------//
        // 選択した日付と名前の印刷に必要なデータ1件を取得するようにする
    async getKanri_kiroku(sendrecode) {
        console.log('受け取った値',sendrecode);
        try {
            const postData = { day_val: sendrecode };
            const response = await this.api.post(import.meta.env.VITE_KANRI_KIROKU, postData, { withCredentials: true });
            return response.data;
        } catch (error) {
            console.error('Error fetching print data:', error);
            throw error;
        }
    }    
    //---------------------------------------------------------------------------//
    //------------------------------------------------------------------------//
        // 選択した日付と名前の印刷に必要なデータ1件を取得するようにする
        async getKanri_userList(sendrecode) {
            console.log('受け取った値',sendrecode);
            try {
                const postData = { day_val: sendrecode };
                const response = await this.api.post(import.meta.env.VITE_KANRI_USERLIST, postData, { withCredentials: true });
                return response.data;
            } catch (error) {
                console.error('Error fetching print data:', error);
                throw error;
            }
        }    
        //---------------------------------------------------------------------------//


}

// インスタンスをエクスポートして、他のモジュールで再利用可能に
const apiService = new ApiService();
export default apiService;

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?