【问题标题】:How to deploy an Laravel 5.4 API and Vue.js 2 project?如何部署 Laravel 5.4 API 和 Vue.js 2 项目?
【发布时间】:2018-08-17 17:17:58
【问题描述】:

我使用 Laravel 5.4 创建了一个 API,并在不同域上使用 Vue.js 2 创建了前端。将 CORS 安装到 API。到这个时候,这一切都在我的本地机器上正常工作。我应该如何以正确的方式将它部署到托管服务器?我有 2 个文件夹:backendfrontend。在那里我实现了 2 个独立的项目:一个是 API,另一个是前端。

这是我的 routes/api.php

Route::group(['middleware' => ['jwt.auth']], function() {    
    Route::get('logout', 'AuthController@logout');
    Route::get('/requests', 'RequestController@index');
    Route::delete('/requests/{id}', 'RequestController@destroy');
});

Route::post('login', 'AuthController@login');
Route::post('register', 'AuthController@register');


Route::post('/requests', 'RequestController@create');

Route::get('/', function() {
    return response()->json([
        'success' => true
    ]);
});

Route::get('/hello', function() {
    return response()->json([
        'success' => true,
        'message' => 'API is working correctly.'
    ]);
});

【问题讨论】:

  • 你到底想做什么?
  • @AnarBayramov 我正在尝试将这些项目合二为一,并将其​​共享到托管服务器中的生产环境中。你能帮忙吗?
  • 请不要重复发布问题。我建议您删除一小时前的第一个问题。
  • @skribe 我已经尝试了很多分享,但没有人可以帮助我...
  • 我明白了。有时我们所有人都会遇到一个问题需要很长时间才能得到答案。当您自己研究问题时,继续编辑并添加到您的问题中,它会稍微将它推到顶部以帮助保持它的活力。

标签: javascript laravel rest api vue.js


【解决方案1】:

您可能已经观察到 Laravel 预先配置为使用 Vue.js 作为其前端,您可以使用它来构建组件,然后使用 Webpack、Laravel-Mix、Babel 等构建或编译到您的 app.js 中。

正常的结构是你的 Laravel 代码,你的 api,位于 app 目录中,你的 Vue.js 和样式表构建在 resources/assets/ 目录中,然后使用 @987654323 构建到你的公共 html 目录中@或npm run watch

要连接前端和后端,或在两者之间进行通信,您将使用某种形式的 XMLHttpRequest,也就是 Ajax。

Laravel 默认安装了 Axios 来满足你所有的 Ajax 需求。这是您要开始考虑对后端进行 api 调用的地方。

来自 Vue 的 Axios 请求看起来像这样。 (基于承诺)

axios.get('logout').then(//some function).catch(//some function);

这是一个向远程端点发出的简单 api 请求,它返回一个带有 {"message":"hello world"} 的 json 响应

Vue.component('example', {
	template: '#cool',
  data(){
  	return{
    	 requestData: {"message":"waiting for request..."},
    }
  },
  methods: {
    makeRequest(){
      axios.get('https://api.myjson.com/bins/xpk6h').then(function(response) {
          console.log(response.data.message); 
          this.requestData = response.data;
       }.bind(this));
    }
  },
});

const app = new Vue({
  el: '#app'
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.13/vue.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/axios/0.18.0/axios.min.js"></script>
<div id="app">
    <example></example>
</div>


<template id="cool" functional>
      <div>
          <button @click="makeRequest">make api request</button>
          <p>{{requestData.message}}</p>
      </div>
 </template>

【讨论】:

  • 我知道 Vue 与 Laravel 一起开箱即用。但是如果我需要实现 ReactJS 应用程序和 Laravel 作为后端呢?
  • 你会以同样的方式去做。无论您使用的是 Vue、React 还是 Angular,您构建的前端都或多或少独立于后端框架。然后使用 Axios 之类的 ajax 库发出请求。
  • 这有帮助吗?连接到 api 的前端的工作示例会有所帮助吗?
  • 好的,刚刚添加了一个简单的 Vue 和 axios 向 api 发出请求的工作示例。如果有什么不明白的,请告诉我。
  • P.S.单击按钮时请耐心等待,因为我使用的 api 服务相当慢。响应大约需要 5 秒左右。
猜你喜欢
  • 2018-07-28
  • 2021-11-20
  • 2017-11-05
  • 1970-01-01
  • 2018-07-25
  • 1970-01-01
  • 1970-01-01
  • 2014-07-03
  • 1970-01-01
相关资源
最近更新 更多