首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么 Laravel 这么优秀?

Laravel 用一个数组保存你注册过所有路由;进行路由匹配时,Laravel 会用你当前请求 pathinfo 来匹配已经注册所有路由;当你路由数量超级多时,最坏情况下你需要 O(n) 次才能找出匹配路由... Laravel 我们可以非常方便为每一个 API 编写功能测试,如下面我们为创建课程编写 HTTP 测试: uses(RefreshDatabase::class); it('create...Laravel 可以高效使用 Eloquent ORM 实现各种查询;如上面的例子我们使用了 withCount 来查询课程学生数量、用 with 加载课程对应教师;还可以指定生成 SQL...Laravel 绝大多数方法参数,你可以随意注入任意数量参数;这也是我最喜欢一点。...;快速生成 Admin 管理后台各种 Generater、操作 Excel SpartnerNL/Laravel-Excel、高效操作图片 Intervention/image、还有最近要被纳入默认测试框架

14310

Laravel API教程:如何构建和测试RESTful API

本文中,我们将探讨如何构建和测试使用Laravel进行身份验证强大API。我们将使用Laravel 5.4,所有的代码都可以GitHub上参考。...来源百度百科 资源(Resources) 资源将是actions目标,我们文章和用户情况下,他们自己端点: /articles /users 在这个laravel api教程,资源将在我们数据模型具有...我建议您在开始获取迁移错误时,测试离开SQLite,或者您希望使用更强大测试,而不是执行运行。 我们还将在每次测试之前运行migrations 。...我们第一个测试 我们可以使用Laravel断言方法轻松击中一个端点并评估其响应。...绝对改进空间 - 您可以使用Passport软件包实现OAuth2 ,集成分页和转换层(我推荐使用Fractal),但是我想通过Laravel创建和测试API基础知识外部包装。

20.2K20
您找到你想要的搜索结果了吗?
是的
没有找到

API网关和微服务开发中使用Docker

执行种子操作最简单方法之一是使用docker-composeexec函数,该函数指定容器执行命令。...这可能就足够了:您可以API Gateway内测试任何权限逻辑或错误处理方式,这与您在任何微服务应用程序方式几乎相同。如果使用身份验证服务,您可以测试每条路线适当权限。...您还可以验证传入请求是否代理了特定服务,如果需要,您可以模拟响应。 但这并不代表端到端测试如果我们想确定具体请求能够产生特定响应,我们将不得不做一些改进。...只要您可以轻松地使用种子数据填充数据模型,编写使用HTTP请求访问API网关测试,这就可以工作。...本文概述方法已经暗示了某些场景可能出现一些缺点,因此您可能已经了解其他技术(如Kubernetes)可能对您有用。希望它为您提供了一些关于如何解决您自己应用程序环境一些问题想法。

2.8K40

Laravel5.3+框架定义API路径取消CSRF保护方法详解

我们绝大多数路径其实都会在web.php定义,因为web.php定义路径默认有CSRF保护,而API路径默认没有CSRF保护。...所以,请注意你页面的表单是否使用了POST、PUT或DELETE方法如果有,并且你没有表单添加相应CSRF token时,你请求将会失败。 有时候,我们可能不想要CSRF保护。...比如我们想使用第三方软件测试表单提交,或者比如微信公众号接口开发时,当微信服务器使用POST推送给我们消息时,如果开启了CSRF保护,那么请求肯定是失败。...在这样情况下,我们可以使用API路径来取消CSRF保护。 我们两种办法来定义API Routes。...本文主要讲解了Laravel框架定义API路径取消CSRF保护操作方法,更多关于Laravel框架使用技巧请查看下面的相关链接

94640

掌握 Laravel 测试方法

更重要是,我们可以轻松实现代码逻辑正确性。 如果您在开发过程中发现某个功能包含多个逻辑处理,那么最好将每个处理逻辑拆分到不同方法里,这样以确保单个方法和代码块可测试。...例如,我们可以为包含如下步骤登录功能实现一个功能测试用例: 发起一个访问登录页面的 GET 请求; 判断我们是否处在登录页面; 生成用于采用 POST 请求方式登录登录数据; 判断是否创建登录会话数据成功...单元测试 上一节我们搭建了用于测试环境。本节我们会在 Laravel 编写单元测试用例对 Post 模型进行测试。 幸运是,Laravel 同样为我们提供了创建测试用例模版文件命令工具。...最后,通过 assertEquals 方法比较两个变量是否相等。 以上就是如何在 Laravel使用单元测试使用方法。...id=1 URI GET 请求,并通过 $response 变量接收响应。 然后,我们去匹配请求响应状态码是否为 200。我们测试用例这个 GET 请求响应状态码应该是 200。

5.6K10

Laravel Ignition 功能全解析

让我们看看默认情况下 PHP 中有什么。使用框架情况下,PHP 提供了这个功能。您只会得到错误:没有堆栈跟踪、没有请求或应用程序详情。 ?...它比默认 Symfony 好得多,可以显示堆栈跟踪和一些关于请求信息。尽管 Laravel Whoops 是默认值,但它是一个框架无关(错误收集展示)。它仅仅显示通用信息。 ?...如果您单击 stack trace选项卡右侧文件名旁边铅笔图标,我们将在您喜欢编辑器自动打开该文件。默认情况下是 PhpStorm 。...对于不需要任何绑定 “简单” 路由参数也是如此。这是一个很好方法可以很容易地看到 Laravel 为这个特定路由接收了什么信息。 路由参数之后,我们还将向您显示在此请求使用中间件列表。... Context 选项卡,我们显示关于您 repo (repo 位于何处,签出提交 hash) 和环境 (您使用 PHP 和 Laravel 哪个版本) 信息。 调试选项卡 ?

3.1K40

Laravel学习笔记(一)——初次见面,多多关照!

前言 前段时间花了好久才弄好LNMP环境,前前后后又倒腾了composer、redis等环境,这才对自己了深刻理解。以后多多编译安装一些环境和软件吧,不然遇到错误了,哭都哭不出来!...可能是Django看多了,对这种不方便开发和使用框架有点反感。 慢慢我了解到Laravel,她优美和简洁完全颠覆了我对优美的理解。...Laravel 默认提供了四个路由文件用于给不同入口使用:web.php、api.php、 console.php 和 channels.php。...,如果应用无需提供无状态、RESTful 风格 API,那么路由基本上都要定义 web.php 文件。...Laravel还有一个路由,所有请求都通过路由,再由路由决定将该请求转发至控制器还是直接打回。

2.2K00

Laravel Sanctum API 授权

这一行,Laravel 9默认是注释掉,需要取消注释 API 令牌认证 发布 API Tokens 要开始为用户颁发令牌,你 User 模型应使用 Laravel\Sanctum\HasApiTokens...HasFactory, Notifiable; } Laravel 9已经默认添加了 要发布令牌,你可以使用 createToken 方法。...存入数据库之前,API 令牌已使用 SHA-256 哈希加密过,但你可以使用 NewAccessToken 实例 plainTextToken 属性访问令牌纯文本值。...; 处理由 Sanctum 验证传入请求时,你可以使用 tokenCan 方法确定令牌是否具有给定能力: if ($user->tokenCan('server:update')) { /...移动应用身份验证 测试 测试时,Sanctum::actingAs 方法可用于验证用户并指定为其令牌授予哪些能力: use App\Models\User; use Laravel\Sanctum\Sanctum

2.9K30

Laravel系列7.4】安全相关

默认情况下,我们安装 Laravel 框架后,会自带一个默认 User Model ,这个 Model 就是这个默认用户表模型类。...不过这些内容不在我们今天讨论范围内,我们只是看一下默认情况下 Laravel 自带认证是如何使用。...接下来你可以自己测试一下效果,访问 /custom/info 这个接口时,你可以用两种方式来传递 api_token 。...中间件守护 Laravel 认证体系,中间件守卫职责,包括配置文件和 Auth 常用方法中都有 guard 这个单词出现。我们源码主要就来看一下它中间件是如何进行认证守护。...,又会调用 getTokenForRequest() 来获得请求参数 api_token 参数,如果不存在的话,则会使用 request bearerToekn() 方法来获得头信息 Authorization

3.5K40

基于 RoadRunner 驱动 Octane 构建高性能 Laravel 应用

接下来,我们就可以 config/octane.php 中指定使用 Swoole 还是 RoadRunner 作为 HTTP 服务器,默认是 roadrunner: 二、什么是 RoadRunner...Worker 进程数和最大处理请求默认情况下,Octane 会根据机器 CPU 内核数来启动对应数量请求处理器进程(Worker),你也可以基于 Octane 启动服务器时通过 --workers...,也不要让状态数据被所有请求共享。...Laravel 引入 RoadRunner 目前 Laravel Octane 只能在 PHP 8.0+ 和 Laravel 8.35+ 版本中使用如果想要在低版本 PHP/Laravel 引入...这里我们模拟通过 4 个线程对 50 个并发请求进行基准测试,持续时间是 30s,基于 PHP-FPM 驱动 Laravel 应用 RPS 是 500+: 同等条件下,基于 RoadRunner 驱动

1.7K30

详解将数据从Laravel传送到vue四种方式

使用上面的任何一种方法,您都可以将 JSON 编码数据回送给您应用程序或其组件。 然而,最大缺点是可扩展性。您 JavaScript 需要直接暴露在模板文件,以便引擎可以呈现您数据。...例如,如果环境变量文件中有 API_DOMAIN=example.com,我可以 Vue 组件(或使用 mix 编译其他 JavaScript )中使用 process.env.API_DOMAIN...默认情况下,web 组中间件设置为 web,api中间件设置为 api。...你可以使用内置 api auth 中间件来执行此操作,或者也可以自己滚动发送请求过程获取令牌。... API 登录方法,你将使用相同 auth()- attempt 方法作为默认 Laravel 应用程序,但从它返回除外是你应该传递回 JSON Web Token 令牌。

8K31

Laravel源码解析之ENV配置

Laravel启动时会加载项目中 .env文件。对于应用程序运行环境来说,不同环境不同配置通常是很有用。...Env文件使用环境env设置 项目中 env文件数量往往是跟项目的环境数量相同,假如一个项目开发、测试、生产三套环境那么项目中应该有三个 .env.dev、 .env.test、 .env.prod...具体三种方法可以按照使用习惯来选择使用: 环境 nginx配置文件里设置 APP_ENV环境变量 fastcgi_param APP_ENV dev; 设置服务器上运行PHP用户环境变量...bootstrapLaravel会检查配置是否缓存过以及判断应该应用那个 env文件,针对上面说根据环境加载配置文件三种方法头两种,因为系统或者nginx环境变量设置了 APP_ENV...因为用我们持续集成做自动化测试时候通常都是容器里进行测试,所以 Dotenv不会覆盖已存在环境变量这个行为就相当重要这样我就可以只设置容器里环境变量值完成测试而不用更改项目里 env文件,等到测试完成后直接去将项目部署到环境上就可以

2K20

【云+社区年度征文】swoft2与laravel-swoole选型实践

总结: 从并发对比图中,从请求成功数与请求失败数来看,swoft与laravel-swoole相比,成功率较高;从网络消耗时间对比,由于swoft连接池存在,明显可以看出,网络IO时间要优于laravel-swoole...swoft文档比较简单,没有过多停留在概念性解释上面,结合在搭建测试环境遇到问题,坑还是不少,相关搜索结果与laravel相比会少很多,有些问题可能会需要从框架源码着手解决,因此对使用者会有一定要求...middle end 从上面对比看出,顺序执行了(即已经做了同步),但是会抛出一个警告,已经是协程环境不要使用run方法,这可能就是框架作者反复强调再次强调,框架只能使用 sgo 函数创建协程。...原因之一。因此,我们只能用sgo方法框架内开协程,srun方法应用场景更多应该是自定义进程等非框架内使用。 可是如果我既想做顺序输出又不想抛出这个警告呢?...,也就是意味着,如果我们sgo方法同步需求时候,需要自己手动在业务代码处调用Context::getWaitGroup()->wait();这一个方法使数据同步。

1.6K61

JSON Web Token(JWT)教程:一个基于Laravel和AngularJS例子

大多数情况下如果包含敏感信息,加密JWT payload就足够了。但是,如果我们要添加额外保护层,可以使用JSON Web Encryption(JWE)规范对JWT payload进行加密。...这可以在内存或数据库完成。如果我们一个分布式系统,我们必须确保我们使用一个不耦合到应用服务器单独会话存储。...跨源请求共享(CORS):当使用AJAX调用从另一个域(跨域,Cross-origin)获取资源时,我们可能会遇到禁止请求问题,因为默认情况下,HTTP请求不包括跨域(Cross-origin)请求...我们可以使用php artisan jwt:generate命令生成该密钥。它将被放置我们config/jwt.php文件。然而,在生产环境,我们不想在配置文件中使用我们密码或API密钥。...我们例子,Authorization如果用户被认证,我们要拦截每个HTTP请求并注入一个包含我们JWT 头。我们也可以使用拦截器来创建一个全局HTTP错误处理程序。

30.5K10

swoft与laravel-swoole选型实践

总结: 从并发对比图中,从请求成功数与请求失败数来看,swoft与laravel-swoole相比,成功率较高;从网络消耗时间对比,由于swoft连接池存在,明显可以看出,网络IO时间要优于laravel-swoole...swoft文档比较简单,没有过多停留在概念性解释上面,结合在搭建测试环境遇到问题,坑还是不少,相关搜索结果与laravel相比会少很多,有些问题可能会需要从框架源码着手解决,因此对使用者会有一定要求...middle end 从上面对比看出,顺序执行了(即已经做了同步),但是会抛出一个警告,已经是协程环境不要使用run方法,这可能就是框架作者反复强调再次强调,框架只能使用 sgo 函数创建协程。...原因之一。因此,我们只能用sgo方法框架内开协程,srun方法应用场景更多应该是自定义进程等非框架内使用。 可是如果我既想做顺序输出又不想抛出这个警告呢?...,也就是意味着,如果我们sgo方法同步需求时候,需要自己手动在业务代码处调用Context::getWaitGroup()->wait();这一个方法使数据同步。

2.9K10

Laravel 7发行说明

默认情况下Laravel使用 mail 配置文件 default 选项指定邮件驱动作为邮件驱动。然而,你可以通过 mailer 方法使用特定邮件驱动来发送邮件。...Symfony 贡献者和 Dries Vints 贡献 Laravel 7 提供了一种方法,用于匹配使用 Artisan 命令 route:cache 缓存已编译缓存路由。...大型应用程序(例如,具有800条或更多路由应用程序)上,这些改进可以使简单「Hello World」基准测试每秒请求速度 提高2倍 ,而无需更改应用程序。...Heuvel 编写受欢迎 Laravel CORS 软件包,为配置跨域资源共享(CORS) OPTIONS 请求响应提供了官方支持, 默认 Laravel 应用程序框架 包含一个新 cors ...有时可能希望指定可以尝试多次任务,但是如果重试是由给定数量异常触发,则该任务将失败。Laravel7可以在任务类上定义 maxExceptions 属性: <?

9K20

通过 Laravel 创建一个 Vue 单页面应用(三)

简化了从数据库构建一个真实后端 API,选择通过 Laravel factory() 方法 API 返回中模拟假数据。...如果你是 Laravel 新手,你可以查阅 数据库入门 上大量文档。...如果一个运行在你设备上 MySQL 实例,你可以使用以下命令行相当快速创建一个新数据库(假设你本地环境没有设置密码): mysql -u root -e"create database vue_spa...回调传递两个参数:一个错误和来自API调用响应。 我们 getUsers() 方法接受一个 page 变量,该变量最终作为查询字符串参数出现在请求。...本教程未向您展示如何构建分页,因此您可以自己找到(或创建)自己喜欢分页! 分页是一种很好方法可以向您展示如何以编程方式使用 Vue 路由器 SPA 导航。

5.1K10

通过 Request 对象实例获取用户请求数据

注入请求对象 Laravel ,访问用户输入数据最常用方式,就是通过注入到控制器方法 Illuminate\Http\Request 对象实例,通过该实例,我们可以访问所有用户请求数据,不管是什么方式...$request 实例获取请求数据 dd($request->all()); } 为了测试这段代码,我们可以 Postman 模拟请求数据,不过测试前需要在 app/Http/Middleware...*' ]; 然后我们 Postman 模拟发起对 /form 路由请求,同时 URL 和请求表单传入请求数据: ?...('name'); 我们还可以为 input 方法传递第二个参数作为默认值,如果请求字段为空的话,则使用默认值: $site = $request->input('site', 'Laravel学院...JSON 格式请求数据处理,我们还是 Postman 模拟提交 JSON 请求: ?

19.7K30

Laravel系列3.4】中间件路由与控制器应用

TP3 时候,其实那几个勾子方法可以视为是中间件一种,只不过它们是请求已经到达控制器了,但在调用具体控制器方法之前,预埋了一些勾子函数而已,关于勾子函数相关知识可以参考 【PHP设计模式-...好了,不扯远了,我们直接来看看中间件 Laravel ,是如何使用。 定义中间件 创建一个中间件也是可以通过命令行。...handle() 里面会读取请求是否 _token 参数或者头信息里是否 X-CSRF-TOKEN 信息,取出来之后与 session _token 信息进行比对。...而前置中间件在业务开发,我们使用得最多其实是对于登录鉴权验证,比如用户是否登录,是否有权限,都可以未到达控制器之前通过中间件进行判断,如果未登录或者权限不够就直接返回错误信息。...全局使用中间件 上面说过内容,都是某一个特定情况下使用中间件,比如说指定路由,或者是指定控制器。

2.6K50

Laravel系列7.2】错误与异常处理

在这个文件一个 register() 方法,它可以注册自定义异常报告程序和渲染回调,默认情况下,也会将异常信息写到日志。...默认情况下这个闭包方法没有任何操作,那么我们不管它,让它继续走默认处理,我们自己定义一个捕获特定错误进行处理方法。...它回调函数两个参数,第一个是异常对象,第二个是请求信息。通过这个请求信息,我们就可以构造不同响应返回页面。...比如说在这里我通过判断请求是否是 ajax 请求来返回不同响应内容,如果是 ajax 请求,那么就返回 json 格式错误信息。如果不是的话,就返回一个我自己定义错误页面。...有趣 Laravel 框架,我们可以自定义异常类定义好 report() 和 render() 方法,这样,如果抛出是我们自定义异常,那么它们就会直接走这个异常类对应 report

2.7K20
领券