如何使用 Laravel 作为 Angular SPA 应用程序的后端?

Posted

技术标签:

【中文标题】如何使用 Laravel 作为 Angular SPA 应用程序的后端?【英文标题】:How to use Laravel as the backend for an Angular SPA app? 【发布时间】:2020-07-14 21:20:18 【问题描述】:

我想用 Angular(前端)和 Laravel(后端)创建一个网站。 连接这两者的最佳方式是什么?他们如何沟通? 我在搜索时发现的是超过 2 年的解决方案,所以我想知道现在是否有首选的方法来做到这一点。

我现在在做什么: 我在 laravel 中创建了 Model、Controller 和 Migration 文件,并在 LanguagesController 中调用“::all”方法从 XAMPP 中获取所有数据:

public function index()


    return response()->json(Languages::all(), 200, ['Content-Type' => 'application/json;charset=UTF-8', 'Charset' => 'utf-8'],
    JSON_UNESCAPED_UNICODE);


之后我在 api.php 中为它创建路由:

Route::get('/languages', "LanguagesController@index");

所以现在,我可以调用 www.laravelfirsttry.com/api/languages 从 Languages 表中获取所有数据。

在 Angular 中,我做了以下事情: 创建一个向 Laravel 发送请求的语言服务

private baseUrl = 'http://www.laravelfirsttry.com/api/languages';

constructor(private http: HttpClient)  

getLanguages() 
  return this.http.get(this.baseUrl);

然后在我的组件中调用该服务,并将其函数的响应提供给我的变量,然后我只处理视图:

constructor(private languageService: LanguageService)  
this.getLanguages();

getLanguages(): void
this.languageService.getLanguages()
  .subscribe((res: any) => 
    this.language_tabs = res;
    console.log(res);
  , error => 
    console.error(error);
  );

但问题是,当我尝试时,api 调用需要相对较长的时间才能完成。我加载了我的网站,所有内容都已加载,但在调用完成之前主要组件不可见。我觉得这看起来不太好,而且我认为我做错了什么。

总结:我在laravel中创建了一个API,然后我在Angular中调用了这个API,它的很慢。使用 Laravel 后端制作 Angular 应用程序的最佳方法是什么?

【问题讨论】:

【参考方案1】:

首先,您需要 HttpClientModule 到您的 AppModule 的导入数组, 像这样的。

import  NgModule  from '@angular/core';
import  BrowserModule  from '@angular/platform-browser';
import  HttpClientModule  from '@angular/common/http';

import  AppComponent  from './app.component';

@NgModule(
    imports: [
        BrowserModule,
        HttpClientModule
    ],
    declarations: [
        AppComponent
    ],
    bootstrap: [AppComponent]
)
export class AppModule  

然后在你的组件中导入 httpClient 并添加到构造函数中

import  HttpClient  from '@angular/common/http';

然后就可以用这样的代码调用API了。

this.http.get<any>('http://www.laravelfirsttry.com/api/languages').subscribe(data => 
            console.log(data);
            // do any operations with your data.
        )

作为先决条件,请确保您的后端 Laravel API 工作正常。

【讨论】:

以上是关于如何使用 Laravel 作为 Angular SPA 应用程序的后端?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Laravel 作为后端时,Angular 包 simple-pdf-viewer 'Access-Control-Allow-Origin' CORS 问题

Laravel 5.1/AngularJS:在 Angular 视图中重置密码(如何验证 CSRF 令牌?)

如何使 Laravel 5 重定向到没有哈希(#)的 Angular 路由?

Laravel 5 CORS 问题与 Ionic Angular

使用 laravel 和 Angular 4 问题通过 API 在数据库中保存文件

如何从Angular向同一域上的Laravel API发送请求?