<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Vue &#8211; エンジニア見習い</title>
	<atom:link href="https://otonan-syusyoku.work/archives/tag/vue/feed" rel="self" type="application/rss+xml" />
	<link>https://otonan-syusyoku.work</link>
	<description>三流プログラマー</description>
	<lastBuildDate>Mon, 15 Apr 2024 14:08:12 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://otonan-syusyoku.work/wp-content/uploads/2023/10/cropped-名称未設定のデザイン-16-32x32.png</url>
	<title>Vue &#8211; エンジニア見習い</title>
	<link>https://otonan-syusyoku.work</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>LaravelにVueコンポーネントをバインドする方法</title>
		<link>https://otonan-syusyoku.work/archives/1720</link>
					<comments>https://otonan-syusyoku.work/archives/1720#respond</comments>
		
		<dc:creator><![CDATA[hrokig2]]></dc:creator>
		<pubDate>Mon, 15 Apr 2024 14:06:40 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Laravel]]></category>
		<category><![CDATA[SPA]]></category>
		<category><![CDATA[Vue]]></category>
		<guid isPermaLink="false">https://otonan-syusyoku.work/?p=1720</guid>

					<description><![CDATA[Laravelプロジェクトを運用している方が jQuery を卒業して Vue または React を導入したい！という悩みに直面する事はしばしばあると思います。 SPAを構築するのはコスト的に対応が難しいため、Lara [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Laravelプロジェクトを運用している方が<span class="sc_marker blue"><strong> jQuery を卒業して Vue または React を導入したい！</strong></span>という悩みに直面する事はしばしばあると思います。</p>
<p>SPAを構築するのはコスト的に対応が難しいため、Laravelプロジェクトの一部にVueを導入する方法を解説しまっす。</p>
<h2>環境</h2>
<ul>
<li>PHP8.2</li>
<li>Laravel10</li>
<li>Vue3
<ul>
<li>node v18.19.1</li>
<li>npm 10.5.0</li>
</ul>
</li>
</ul>
<h2>やりたいこと</h2>
<p>Laravel10の一部にVue.jsを適用する</p>
<ul>
<li>Vueコンポーネントを定義する</li>
<li>Vueコンポーネントをバインドする</li>
<li>Vueコンポーネントにバックエンドからデータを渡す</li>
</ul>
<h2>手順</h2>
<p><img fetchpriority="high" decoding="async" src="https://otonan-syusyoku.work/wp-content/uploads/2024/02/Lets-GO.png" alt="Let&#96;s GO" width="1000" height="500" class="aligncenter size-full wp-image-1680" srcset="https://otonan-syusyoku.work/wp-content/uploads/2024/02/Lets-GO.png 1000w, https://otonan-syusyoku.work/wp-content/uploads/2024/02/Lets-GO-300x150.png 300w, https://otonan-syusyoku.work/wp-content/uploads/2024/02/Lets-GO-768x384.png 768w" sizes="(max-width: 1000px) 100vw, 1000px" /></p>
<h3>なにわともあれVueのインストール</h3>
<p>LaravelはビルドツールにViteを採用しているため、ViteのプラグインとしてVueをインストールします。<br />
（CLIでインストールしても良いと思いますよ！</p>
<pre class="line-numbers"><code class="language-other">$ npm install @vitejs/plugin-vue

<span>$ npm install @vitejs/plugin-vue --save-dev</span></code></pre>
<h3>vite.config.js の設定</h3>
<p>インストールしたVueを設定ファイルに追記します</p>
<pre class="line-numbers"><code class="language-js">import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue'; // 追記

export default defineConfig({
  plugins: [vue()] // 追記
});</code></pre>
<h3>app.jsを使える状態に持っていく</h3>
<p>Vueコンポーネントをグローバルコンポーネントとして登録するために、以下の形でapp.jsを編集します。</p>
<p>下記の記述でやりたいこととしては、<span class="sc_marker blue"><strong>コンポーネントの作成及びコンポーネントのマウント</strong></span>です。</p>
<pre class="line-numbers"><code class="language-js">import './bootstrap';
import {createApp} from 'vue';
import Alpine from 'alpinejs';
import VueDatePicker from './Components/Utility/CsrfToken.vue';
import VueDatePicker from './Components/Utility/DatePicker.vue';
import AddSalesListModal from "./Components/AddSalesListModal.vue";

window.Alpine = Alpine;

Alpine.start();

const app = createApp({});

// グローバルコンポーネント
app.component('csrf-token', CsrfToken);
app.component('add-sales-list-modal', AddSalesListModal);
app.component('date-picker', VueDatePicker);

// #appにマウント
app.mount('#app');
</code></pre>
<p>&nbsp;</p>
<h3>マウント先の指定</h3>
<p>app.js でマウント先を id=&#8217;app&#8217; としたため、以下のように blade ファイルにマウント先となる記述を設定します。</p>
<pre class="line-numbers"><code class="language-php">&lt;body id="app" class="font-sans antialiased flex flex-col min-h-screen"&gt;
~
~
~
&lt;/body&gt;</code></pre>
<h3>コンポーネントの作成</h3>
<p>試しにLaravelで生成されるCSRFトークンを扱うコンポーネントを作成します。</p>
<p>このコンポーネントはaxios等で非同期通信を実装するときなどに重宝されるはずですので、皆さんも作っておくと便利ですよん。<br />
（今回は擬似的にpタグにCSRFトークンを出力していますが、本来はしません</p>
<pre class="line-numbers"><code class="language-js">&lt;script&gt;
import { ref, onMounted } from 'vue';

export default function useCsrfToken() {
    const csrfToken = ref('');

    onMounted(() =&gt; {
        const token = document.querySelector('meta[name="csrf-token"]')?.getAttribute('content');
        if (token) {
            csrfToken.value = token;
        }
    });

    return csrfToken;
}
&lt;/script&gt;

&lt;template&gt;
&lt;p&gt;{{ csrfToken }} &lt;/p&gt;
&lt;/template&gt;</code></pre>
<h3>コンポーネントの呼び出し</h3>
<p>以下の通りに記述したらVueで取得したCSRFトークンが出力されているはずですぅぅ</p>
<pre class="line-numbers"><code class="language-php">&lt;csrf-token&gt;&lt;/csrf-token&gt;</code></pre>
<p>Vueにバックエンドのデータを渡したいときには、以下の通りに実装してみてください</p>
<pre class="line-numbers"><code class="language-other">// Blade
&lt;csrf-token :test='@json($test)'&gt;&lt;/csrf-token&gt;

// Vue
&lt;script setup&gt;
import { defineProps, ref } from "vue";

const props = defineProps({
    test: Object,
});
&lt;/script&gt;</code></pre>
<h2>最後に</h2>
<p>SPAカッコいいから時間さえあればSPA化したい。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://otonan-syusyoku.work/archives/1720/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>RESTful APIとSPAの関係についてReactとPHPで解説します</title>
		<link>https://otonan-syusyoku.work/archives/1674</link>
					<comments>https://otonan-syusyoku.work/archives/1674#respond</comments>
		
		<dc:creator><![CDATA[hrokig2]]></dc:creator>
		<pubDate>Sun, 25 Feb 2024 12:40:20 +0000</pubDate>
				<category><![CDATA[好きではないJS]]></category>
		<category><![CDATA[絶対に必要なIT基礎知識]]></category>
		<category><![CDATA[HTTP]]></category>
		<category><![CDATA[JS]]></category>
		<category><![CDATA[Laravel]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[React]]></category>
		<category><![CDATA[Vue]]></category>
		<category><![CDATA[セキュリティ]]></category>
		<guid isPermaLink="false">https://otonan-syusyoku.work/?p=1674</guid>

					<description><![CDATA[RESTful APIとは？ RESTful APIは、ウェブアプリケーションやウェブサービスで使われるプログラミングインターフェースです。 REST（Representational State Transfer）の原 [&#8230;]]]></description>
										<content:encoded><![CDATA[<h2>RESTful APIとは？</h2>
<p><img decoding="async" src="https://otonan-syusyoku.work/wp-content/uploads/2024/02/DMARCを設定しなくちゃ-1.png" alt="What&#96;s up" width="1000" height="500" class="aligncenter size-full wp-image-1665" srcset="https://otonan-syusyoku.work/wp-content/uploads/2024/02/DMARCを設定しなくちゃ-1.png 1000w, https://otonan-syusyoku.work/wp-content/uploads/2024/02/DMARCを設定しなくちゃ-1-300x150.png 300w, https://otonan-syusyoku.work/wp-content/uploads/2024/02/DMARCを設定しなくちゃ-1-768x384.png 768w" sizes="(max-width: 1000px) 100vw, 1000px" /></p>
<p>RESTful APIは、ウェブアプリケーションやウェブサービスで使われるプログラミングインターフェースです。<br />
REST（Representational State Transfer）の原則に基づいて設計されており、ウェブ上のリソースへのアクセスや操作を統一的な方法で提供します。<br />
リソースはURLで識別され、HTTPメソッド（GET、POST、PUT、DELETEなど）を使ってアクセスされます。</p>
<p>[getpost id=&#8221;1672&#8243; cat_name=&#8221;1&#8243; date=&#8221;0&#8243;]</p>
<h2>SPA（シングルページアプリケーション）とは？</h2>
<p>SPAは、ユーザーがアプリケーションを操作する際にページの再読み込みをせずに、必要なデータのみをサーバーから非同期に取得し、動的にページの内容を更新するウェブアプリケーションの形式です。</p>
<p>これにより、<span class="sc_marker blue"><strong>従来のマルチページアプリケーションに比べてユーザーエクスペリエンスが向上します。</strong></span></p>
<p>僕が所属しているチームでも<strong>ページのリロードが嫌だというユーザーの使用感からSPAへの移行が少しづつ始まってきています</strong>。<br />
世間的にもSPAは流行っていますよね。（流行っているから偉いというわけではない。知ることが大事</p>
<h2>RESTful APIとSPAの関係性</h2>
<p><img decoding="async" src="https://otonan-syusyoku.work/wp-content/uploads/2024/02/Lets-GO.png" alt="Let&#96;s GO" width="1000" height="500" class="aligncenter size-full wp-image-1680" srcset="https://otonan-syusyoku.work/wp-content/uploads/2024/02/Lets-GO.png 1000w, https://otonan-syusyoku.work/wp-content/uploads/2024/02/Lets-GO-300x150.png 300w, https://otonan-syusyoku.work/wp-content/uploads/2024/02/Lets-GO-768x384.png 768w" sizes="(max-width: 1000px) 100vw, 1000px" /></p>
<p>SPAでは、<strong>ページの初回読み込み時にアプリケーションの全てのコード（HTML、CSS、JavaScript）がロード</strong>されます。</p>
<p>その後の<span class="sc_marker blue"><strong>ユーザーの操作によってデータが必要になる場合、SPAはRESTful APIを通じてサーバーからデータを非同期に取得</strong></span>します。<br />
<strong>このデータはJSONやXML形式で返され、JavaScriptを用いてクライアントサイドで処理され、ページの一部分だけが動的に更新</strong>されます。</p>
<p>このアーキテクチャにより、SPAはユーザーにスムーズで反応の良いインターフェイスを提供できます。</p>
<p><span class="sc_marker blue"><strong>RESTful APIはこのプロセスの背後にあるデータ通信の基盤となります。</strong></span></p>
<h2>PHPとReactを使った例</h2>
<p>ここでは、PHPで書かれた簡単なRESTful APIと、Reactを使ったSPAの例を示します。</p>
<h3>PHPによるRESTful API</h3>
<p>PHPで簡単なAPIエンドポイントを作成します。この例では、GETリクエストを受け取り、簡単なJSONデータを返します。</p>
<div class="dark bg-gray-950 rounded-md">
<div>
<pre class="line-numbers"><code class="language-php">&lt;?php 
    header('Content-Type: application/json');
    $response = ['message' =&gt; 'Hello, world!'];
    echo json_encode($response); 

<code>    // Response
    //{"message": "Hello, world!"}</code> ?&gt;</code></pre>
</div>
</div>
<p>このPHPスクリプトは、サーバーに配置してのようにアクセスすると<span style="background-color: #ffffff; color: #333333; font-family: 游ゴシック, YuGothic, 'ヒラギノ角ゴ Pro W3', 'Hiragino Kaku Gothic Pro', Verdana, メイリオ, Meiryo, Osaka, 'ＭＳ Ｐゴシック', 'MS PGothic', sans-serif;">JSONが返されます。</span></p>
<h3>ReactによるSPA</h3>
<p>Reactで簡単なSPAを作成し、上記のAPIからデータを取得して表示します。</p>
<div class="dark bg-gray-950 rounded-md">
<div class="p-4 overflow-y-auto">
<pre class="line-numbers"><code class="language-js">import React, { useState, useEffect } from 'react';
import axios from 'axios';

function App() {
  const [message, setMessage] = useState('');

  useEffect(() =&gt; {
    axios.get('http://yourserver.com/index.php')
      .then(response =&gt; {
        setMessage(response.data.message);
      })
      .catch(error =&gt; console.error('There was an error!', error));
  }, []);

  return (
    &lt;div&gt;
      &lt;button&gt;{message}&lt;/button&gt;
    &lt;/div&gt;
  );
}

export default App;
</code></pre>
<p>このコードは、コンポーネントがマウントされた後にAPIからデータを取得し、取得したメッセージを表示します。<br />
React（クライアントサイド）とPHP（サーバーサイド）を使った、RESTful APIとSPAの基本的な連携を示しています。</p>
</div>
<p>今回のコードでは、データを取得して表示するだけのコードになっていますが、Event処理などによりリロードされることなく動的にページの内容を変更させることが可能です。</p>
<h2>セキュリティとパフォーマンスの考慮</h2>
</div>
<p>SPA（シングルページアプリケーション）とRESTful APIを使用する際には、セキュリティとパフォーマンスの両方に配慮することが重要です。<br />
以下では、これらの観点から基本的なガイドラインをいくつか紹介します。</p>
<h3>セキュリティ</h3>
<ol>
<li><strong>HTTPSを使用する<br />
</strong>データの暗号化を確実に行うため、APIとの通信には常にHTTPSを使用します。（当たり前です）<br />
これにより、中間者攻撃（MITM）のリスクを減らすことができます。</li>
<li><strong>CORSポリシーを適切に設定する<br />
</strong>クロスオリジンリソースシェアリング（CORS）ポリシーを適切に設定し、信頼できるオリジンからのリクエストのみを許可します。<br />
不適切なCORS設定は、セキュリティリスクを招く可能性があります。</li>
<li><strong>認証と認可<br />
</strong>JWT（JSON Web Tokens）やOAuthなどの堅牢な認証メカニズムを使用して、APIへのアクセスをセキュアに管理します。<br />
また、ユーザーの権限に基づいてアクセスを制御する認可も重要です。</li>
<li><strong>入力の検証とサニタイズ<br />
</strong> SQLインジェクションやクロスサイトスクリプティング（XSS）攻撃を防ぐため、サーバー側とクライアント側の両方で入力値の検証とサニタイズを行います。</li>
<li><strong>依存関係のセキュリティ<br />
</strong>使用するライブラリやフレームワークのセキュリティ脆弱性に注意し、定期的に更新を行い脆弱性を修正します。</li>
</ol>
<p>この辺の対策については過去に記事にしていますので時間ある人は読んでみてくださーい</p>
<p>[getpost id=&#8221;1618&#8243; cat_name=&#8221;1&#8243; date=&#8221;0&#8243;][getpost id=&#8221;1256&#8243; cat_name=&#8221;1&#8243; date=&#8221;0&#8243;]</p>
<h3>パフォーマンス</h3>
<ol>
<li><strong>コードの分割<br />
</strong>ユーザーが必要とするコードのみをダウンロードするように、コード分割（Code Splitting）を実装します。<br />
これにより、初期ロード時間を短縮できます。</li>
<li><strong>キャッシュ戦略の利用<br />
</strong>静的リソースやAPIレスポンスのキャッシュを適切に利用することで、パフォーマンスを向上させることができます。<br />
ブラウザのキャッシュやCDNの利用が有効です。</li>
<li><strong>遅延ローディング（Lazy Loading）<br />
</strong> 画像やコンポーネントなど、必要になるまでロードしないようにします。<br />
これにより、初期ロードのパフォーマンスを向上させることができます。</li>
<li><strong>APIの最適化<br />
</strong>不必要なデータの送受信を避けるため、APIのレスポンスをできるだけ小さく保ちます。<br />
また、必要なデータのみを取得するためのフィルタリングやページネーションをAPI側でサポートします。</li>
<li><strong>フロントエンドのパフォーマンス最適化<br />
</strong>Reactなどのフロントエンドフレームワークを使用する場合は、不要な再レンダリングを避け、メモ化（memoization）や仮想DOMの効率的な利用などのテクニックを活用します。</li>
</ol>
<p>セキュリティとパフォーマンスは、アプリケーションの設計と開発の初期段階から考慮する必要があります。<br />
これらの基本的なガイドラインを実践することで、ユーザーに安全で快適な体験を提供することができます。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://otonan-syusyoku.work/archives/1674/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【Laravel】BladeファイルからVue3コンポーネントに配列を渡す方法-備忘録(解説なし)</title>
		<link>https://otonan-syusyoku.work/archives/1281</link>
					<comments>https://otonan-syusyoku.work/archives/1281#respond</comments>
		
		<dc:creator><![CDATA[hrokig2]]></dc:creator>
		<pubDate>Sun, 12 Mar 2023 13:36:32 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Laravel]]></category>
		<category><![CDATA[Vue]]></category>
		<guid isPermaLink="false">https://otonan-syusyoku.work/?p=1281</guid>

					<description><![CDATA[散々迷った 3ファイル間の設定でBladeからVueコンポーネントに配列渡せます。 test.blade.php //Contorollerから渡しても良い //ここではBladeファイル内で配列作成 @php $pho [&#8230;]]]></description>
										<content:encoded><![CDATA[<h2>散々迷った</h2>
<p>3ファイル間の設定でBladeからVueコンポーネントに配列渡せます。</p>
<h4>test.blade.php</h4>
<pre class="line-numbers"><code class="language-php">//Contorollerから渡しても良い
//ここではBladeファイル内で配列作成
@php
        $photes_data = array(
            array(
                'img_no'=&gt; '0',
                'path' =&gt; 'laundry.jpg',
                'alt' =&gt; 'サーフボード'
            ),
            array(
                'img_no'=&gt; '1',
                'path' =&gt; 'harusa.jpg',
                'alt' =&gt; '農業'
            ),
            array(
                'img_no'=&gt; '2',
                'path' =&gt; 'ht-beach.jpeg',
                'alt' =&gt; 'ht_1'
            )
        );
@endphp

//コンポーネント作成
&lt;div id="phote_gallery"&gt;
　　　　//配列をJSONに変換
    &lt;template-photegallery v-bind:photes_data="'{{ json_encode($photes_data) }}'"&gt;&lt;/template-photegallery&gt;
&lt;/div&gt;</code></pre>
<p>&nbsp;</p>
<h4>resources/js/app.js</h4>
<pre class="line-numbers"><code class="language-js">import {createApp} from 'vue';
import Test from './components/Test.vue';
if(document.getElementById('phote_gallery')){
    console.log("test.blade.php")
    createApp({})
        .component("template-photegallery", Test)
        .mount('#phote_gallery');
}</code></pre>
<p>Laravelにおいてresources/js/app.jsがVue.jsのエントリーポイントになるので、当ファイルにてVue.jsのコンポーネントをインスタンス化しています。</p>
<p>ただしこのファイルは全てのBladeファイルで読み込んでいるので、このコンポーネントを使わないファイルでもインスタンス化してしまいます。</p>
<p>それを防ぐためにid=&#8221;phote_gallery&#8221;があるときだけインスタンス化したいいと考えて、js構文でhmtl内のID属性取得。</p>
<p>&nbsp;</p>
<p>Vue3からVueアプリを作成する場合はcreateApp({})関数を使う様になったので、仕様通りに作成。<br />
※Vue2の書き方では動作しませんでした。</p>
<div class="sc_frame_wrap inline orange">
<div class="sc_frame no-title">
<p>人様のブログ記事なんですけど大変参考になったので、Vue2とVue3の違いが分からない人はぜひ目を通してみてください。<br />
<a href="https://blog.capilano-fw.com/?p=6393">Vue 3の新しい機能と変更点・全11件</a><a href="https://blog.capilano-fw.com/?p=6393"></a></p>
</div>
</div>
<p>&nbsp;</p>
<h4>Test.vue</h4>
<pre class="line-numbers"><code class="language-js">&lt;script setup&gt;
import { defineProps } from "vue";
const props = defineProps({
    photes_data: {
        type: String,
        required: true,
    },
});
console.log(props.photes_data);
&lt;/script&gt;</code></pre>
<p>Propsを定義し、test.blade.phpで作成した&lt;template-photegallery&gt;&lt;/template-photegallery&gt;の「template-photegallery」を呼び出すことでBladeからVue3へのデータ連携が完了です。</p>
<p>&nbsp;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://otonan-syusyoku.work/archives/1281/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【Laravel】axiosを使った非同期通信が404になる</title>
		<link>https://otonan-syusyoku.work/archives/1270</link>
					<comments>https://otonan-syusyoku.work/archives/1270#respond</comments>
		
		<dc:creator><![CDATA[hrokig2]]></dc:creator>
		<pubDate>Mon, 06 Mar 2023 06:03:34 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[JS]]></category>
		<category><![CDATA[Laravel]]></category>
		<category><![CDATA[Vue]]></category>
		<category><![CDATA[非同期通信]]></category>
		<guid isPermaLink="false">https://otonan-syusyoku.work/?p=1270</guid>

					<description><![CDATA[エラー内容 レスポンス： AxiosError {message: 'Request failed with status code 404', name: 'AxiosError', code: 'ERR_BAD_RE [&#8230;]]]></description>
										<content:encoded><![CDATA[<h2>エラー内容</h2>
<p>レスポンス：</p>
<pre class="line-numbers"><code class="language-js">AxiosError {message: 'Request failed with status code 404', name: 'AxiosError', code: 'ERR_BAD_REQUEST',</code></pre>
<p>&nbsp;</p>
<p>考えられる原因：</p>
<ul>
<li>ルーティングを間違えている</li>
<li>通信先のURLが間違えている</li>
</ul>
<p>&nbsp;</p>
<h2>404になる原因</h2>
<p>Routeの設定を行っているのにレスポンスがになってしまう。</p>
<p>解決方法はエラーの文言通り、ページが存在していない事が原因です。</p>
<h3>エラーになるコード</h3>
<p>routes/api.php</p>
<pre class="line-numbers"><code class="language-php">Route::get(
    '/test',
    [Test::class, 'test_function']
);</code></pre>
<p>&nbsp;</p>
<p>resources/js/components/EnduserSearchstore.vue</p>
<pre class="line-numbers"><code class="language-js">import axios from 'axios';

    export default {
        data() {
            return {
                users: {},
            }
        },
        methods: {
            getBigCategory() {
                axios.get('/api_search_storeCategory')
                    .then((response) =&gt; {
                        // this.users = response.data.users
                        response(console.log(response))
                    })
            }
        },
        created() {
            this.getBigCategory()
        }
    }</code></pre>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h3>正常動作するコード</h3>
<p>routes/api.php</p>
<pre class="line-numbers"><code class="language-php">Route::get(
    '/test',
    [Test::class, 'test_function']
);</code></pre>
<p>&nbsp;</p>
<p>resources/js/components/EnduserSearchstore.vue</p>
<pre class="line-numbers"><code class="language-js">import axios from 'axios';

    export default {
        data() {
            return {
                users: {},
            }
        },
        methods: {
            getBigCategory() {
                axios.get('/api/test')
                    .then((response) =&gt; {
                        // this.users = response.data.users
                        response(console.log(response))
                    })
            }
        },
        created() {
            this.getBigCategory()
        }
    }</code></pre>
<p>&nbsp;</p>
<h3> 修正内容</h3>
<p>axiosでURLを指定している箇所を「<strong>axios.get(&#8216;/api/test&#8217;)</strong>」と指定してあげる。</p>
<p>Laravelでは、route/api.phpで指定したルーティングではデフォルトで接頭辞に「/api」が付くことになっているっぽいです。<br />
そのため、エラーになるコードではVue側で呼び出しているURLは存在しない遷移先となっています。</p>
<p>LaravelのAPIのルーティングはデフォルトが付くのを忘れないようにしましょう〜。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://otonan-syusyoku.work/archives/1270/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
