首页 > 后端开发 > php教程 > 构建一个具有Laravel Restful后端的React应用:第1部分,Laravel 9 API

构建一个具有Laravel Restful后端的React应用:第1部分,Laravel 9 API

Joseph Gordon-Levitt
发布: 2025-03-01 09:14:10
原创
481 人浏览过

Laravel和React是两种流行的Web开发技术,用于构建现代Web应用程序。 Laravel是服务器端的PHP框架,而React是客户端JavaScript库。该教程是对Laravel和React的介绍,将它们结合在一起以创建现代Web应用程序。

在现代Web应用程序中,该服务器的工作有限,可以通过某些API(应用程序编程界面)端点来管理后端。客户端将请求发送到这些端点,并且服务器返回响应。但是,服务器不关心客户端如何呈现视图,这与关注原则的分离完全符合。该体系结构允许开发人员为Web构建强大的应用程序以及针对不同设备的不同设备。

在本教程中,我们将使用最新版本的Laravel,版本9来创建一个安息的后端API。前端将包含用React编写的组件。我们将构建一个足智多谋的产品上市应用程序。教程的第一部分将更多地关注Laravel概念和后端。让我们开始。它具有表达性语法,该语法偏爱公约而不是配置范式。 Laravel拥有您需要从开箱即用的项目开始的所有功能。但是就我个人而言,我喜欢Laravel,因为它将PHP的开发变成了完全不同的体验和工作流程。

,另一方面,React是Facebook开发的流行JavaScript库,用于构建单页应用程序。 React可以帮助您将视图分解为每个组件描述应用程序UI的一部分的组件。基于组件的方法具有组件可重复使用性和模块化的额外好处。

>

为什么Laravel and React?

如果您是为Web开发的,则可能倾向于为服务器和客户端使用单个代码库。但是,并非每个公司都赋予开发人员使用自己选择的技术的自由,这是出于某些充分的理由。在整个项目中使用JavaScript堆栈是当前的规范,但是没有什么可以阻止您为服务器端和客户端选择两种不同的技术。

那么,Laravel和React Recess with with for narve。很好,实际上。尽管Laravel已经记录了对Vue.js的支持,这是另一个JavaScript框架,但我们将使用React作为前端,因为它更受欢迎。另外,如果您在React或Laravel方面都有事先经验,那么您将能够充分利用本教程。但是,如果您是两个框架的新手,请不要担心。该教程是从初学者的角度写的,您应该能够毫无麻烦地赶上。您可以在GitHub上找到教程的源代码。

>安装和设置Laravel Project

在开始使用Laravel之前,请确保您已经在本地计算机上安装了PHP和Composer。这是因为Laravel基于PHP,并使用作曲家来管理所有依赖关系。在计算机上安装作曲家时,请确保选择将其添加到路径环境变量中的选项,以便在全球范围内访问作曲家。 一旦安装了作曲家,您应该能够生成一个新鲜的Laravel项目,如下所示:

>如果一切顺利,您应该能够在productsController

的开发服务器上为我们的应用程序提供服务,我们在app/http/app/hhttp/controllers/controllers/productscontrolllollerer.plollerer.phppppers
composer create-project laravel/laravel example-app<br>
登录后复制
登录后复制
上都可以找到。

>路由/api.php带有新导入和路由。如果您还没有注意到,我将产品实例注入了控制器方法中。这是Laravel隐式约束的一个例子。 Laravel试图将模型实例名称 product $ product

与URI段名称 {product} <div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">&lt;?php&lt;br&gt;&lt;br&gt;namespace App\Http\Controllers;&lt;br&gt;&lt;br&gt;use Illuminate\Http\Request;&lt;br&gt;use App\Product;&lt;br&gt;&lt;br&gt;class ProductsController extends Controller&lt;br&gt;{&lt;br&gt;&lt;br&gt; public function index()&lt;br&gt; {&lt;br&gt; return Product::all();&lt;br&gt; }&lt;br&gt;&lt;br&gt; public function show(Product $product)&lt;br&gt; {&lt;br&gt; return $product;&lt;br&gt; }&lt;br&gt;&lt;br&gt; public function store(Request $request)&lt;br&gt; {&lt;br&gt; $product = Product::create($request-&gt;all());&lt;br&gt;&lt;br&gt; return response()-&gt;json($product, 201);&lt;br&gt; }&lt;br&gt;&lt;br&gt; public function update(Request $request, Product $product)&lt;br&gt; {&lt;br&gt; $product-&gt;update($request-&gt;all());&lt;br&gt;&lt;br&gt; return response()-&gt;json($product, 200);&lt;br&gt; }&lt;br&gt;&lt;br&gt; public function delete(Product $product)&lt;br&gt; {&lt;br&gt; $product-&gt;delete();&lt;br&gt;&lt;br&gt; return response()-&gt;json(null, 204);&lt;br&gt; }&lt;br&gt;&lt;br&gt;}&lt;br&gt;</pre><div class="contentsignin">登录后复制</div></div><div class="contentsignin">登录后复制</div></div>匹配。如果找到匹配项,则将产品模型的实例注入到控制器操作中。如果数据库没有产品,则返回404错误。最终结果与以前相同,但代码较少。<strong></strong>打开Postman或VS代码,产品的端点应正常工作。确保您具有<code> ACCEPT:application/json<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">// Include this at the file top:&lt;br&gt;use App\Http\Controllers\ProductsController;&lt;br&gt;&lt;br&gt;/**&lt;br&gt;**Basic Routes for a RESTful service:&lt;br&gt;**Route::get($uri, $callback);&lt;br&gt;**Route::post($uri, $callback);&lt;br&gt;**Route::put($uri, $callback);&lt;br&gt;**Route::delete($uri, $callback);&lt;br&gt;**&lt;br&gt;*/&lt;br&gt;&lt;br&gt;&lt;br&gt;Route::get('products', 'ProductsController@index');&lt;br&gt;&lt;br&gt;Route::get('products/{product}', 'ProductsController@show');&lt;br&gt;&lt;br&gt;Route::post('products','ProductsController@store');&lt;br&gt;&lt;br&gt;Route::put('products/{product}','ProductsController@update');&lt;br&gt;&lt;br&gt;Route::delete('products/{product}', 'ProductsController@delete');&lt;br&gt;&lt;br&gt;&lt;br&gt;</pre><div class="contentsignin">登录后复制</div></div>标题启用。如果您希望服务器返回JSON响应,则必须更改默认异常处理行为。 Laravel具有一个专门用于<p>app/exceptions/handler.php <code>Product $product的例外处理程序的处理程序类。该类主要具有两种方法: report()<code>{product} render()

Report<p>方法对于报告和记录异常事件很有用,而渲染方法用于遇到异常时返回响应。更新渲染方法以返回JSON响应:<code>Accept : application/json

composer create-project laravel/laravel example-app<br>
登录后复制
登录后复制
>

laravel还允许我们使用一组验证规则验证传入的HTTP请求,并在验证失败时自动返回JSON响应。验证的逻辑将放置在控制器内部。 IlluminateHttpRequest对象提供了一种验证方法,我们可以用来定义验证规则。让我们将一些验证检查添加到> app/http/http/controllers/productscontroller.php 的商店方法中。但是,API缺乏基本功能,例如身份验证和限制对未经授权用户的访问。 Laravel对身份验证有开箱即用的支持,并且为其构建API相对容易。我鼓励您将身份验证API作为一种练习实施。

<?php<br><br>namespace App\Http\Controllers;<br><br>use Illuminate\Http\Request;<br>use App\Product;<br><br>class ProductsController extends Controller<br>{<br><br>    public function index()<br>	{<br>	    return Product::all();<br>	}<br><br>	public function show(Product $product)<br>	{<br>	    return $product;<br>	}<br><br>	public function store(Request $request)<br>	{<br>	    $product = Product::create($request->all());<br><br>	    return response()->json($product, 201);<br>	}<br><br>	public function update(Request $request, Product $product)<br>	{<br>	    $product->update($request->all());<br><br>	    return response()->json($product, 200);<br>	}<br><br>	public function delete(Product $product)<br>	{<br>	    $product->delete();<br><br>	    return response()->json(null, 204);<br>	}<br><br>}<br>
登录后复制
登录后复制
>我们的后端已经完成了,我们将把重点转移到前端概念上。在此处查看本系列的第二篇文章:

以上是构建一个具有Laravel Restful后端的React应用:第1部分,Laravel 9 API的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板