如何在Laravel中动态隐藏API字段

  介绍

这篇文章将为大家详细讲解有关如何在Laravel中动态隐藏API字段,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

<强>在Laravel中动态隐藏API字段

我最近在Laravel巴西社区看到一个问题,结果比看起来更有趣。想象一下你有一个<代码> UsersResource> & lt; php ?   namespace  App \ Http \资源;   use 阐明\ Http资源\ \ Json \资源;   class  UsersResource  extends 资源   {   ,,,/* *   ,,,,*,Transform 从而resource  into  an 数组。   ,,,,   ,,,,*,@param  \照亮\ Http \请求   ,,,,*,@return 数组   ,,,*/,,,public  function  toArray(请求)   ,,,{   ,,,,,,,return  [   ,,,,,,,,,,,& # 39;id # 39;,=祝辞,$ this→id,   ,,,,,,,,,,,& # 39;名字# 39;,=祝辞,$ this→名称,   ,,,,,,,,,,,& # 39;电子邮件,,=在这个→美元的电子邮件   ,,,,,,,);   ,,,}   }

出于某种原因,您可能希望在另一个端点上重新使用该资源类,但隐藏<代码>邮件> 如果你不知道,<代码> API参考资料> <李>

第一印象> composer  create-project ——prefer-dist  laravel/laravel  api-fields   cd  api-fields   touch 数据库/database.sqlite

编辑<代码>。env 文件,删除数据库设置并使用SQLite

DB_CONNECTION=SQLite

继续设置项目

php  artisan 迁移   php  artisan : resource  UsersResource   php  artisan 使:resource ——collection  UsersResourceCollection    php  artisan : controller  UsersController   php  artisan 修补   工厂(App \用户::类)→*(20)→创建();   退出
2 -路由

确保在<代码> api。php代码文件中创建一个路由。

路线::apiResource(& # 39;/用户# 39;,,& # 39;UsersController& # 39;);
3 -控制器

控制器代表了期望的目标。在这个例子中,让我们假设在用户列表中,我们只想要所有用户的名字,而在用户显示中,我们只想隐藏电子邮件地址。

& lt; php ?   namespace 应用\ Http \控制器;   use 应用\ Http资源\ \ UsersResource;   use 应用\用户;   class  UsersController  extends 控制器   {   ,,,/* *   ,,,,*,Display  a  listing  of 从而资源。   ,,,,   ,,,,*,@param  User  $用户   ,,,,*,@return  \照亮\ Http \响应   ,,,*/,,,public  function 指数(User  $用户)   ,,,{   ,,,,,,,return  UsersResource:收集($ user→随意翻阅())→隐藏((& # 39;id # 39;,, & # 39;电子邮件# 39;]);   ,,,}   ,,,/* *   ,,,,*,Display  a 用户。   ,,,,   ,,,,*,@param  User  $用户   ,,,,*,@return  \照亮\ Http \响应   ,,,*/,,,public  function 显示(User  $用户)   ,,,{   ,,,,,,,return  UsersResource:使($ user)→隐藏((& # 39;id # 39;]);   ,,,}   }

为了达到这个目的,我们需要<代码> UsersResourceCollection 和<代码> UsersResource> 隐藏>

4 -, UsersResource类

让我们从,<代码>显示> UsersResource::> UsersResource> 隐藏的神秘面纱,它可以存储我们期望从响应中移除的键。

如何在Laravel中动态隐藏API字段