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

如何在Laravel项目中从GraphQL模式调用一个雄辩的动态作用域(只有一个参数)?

在Laravel项目中,可以通过以下步骤从GraphQL模式调用一个雄辩的动态作用域:

  1. 首先,确保你的Laravel项目已经安装了Laravel GraphQL扩展包。你可以使用Composer命令进行安装:
代码语言:txt
复制
composer require rebing/graphql-laravel
  1. 安装完成后,在config/app.php文件中注册Laravel GraphQL服务提供者。找到providers数组并添加以下代码:
代码语言:txt
复制
Rebing\GraphQL\GraphQLServiceProvider::class,
  1. 创建一个GraphQL查询类型。在终端中执行以下命令来生成一个查询类型文件:
代码语言:txt
复制
php artisan make:graphql:type QueryType

这将在app/GraphQL/Types目录下生成一个QueryType.php文件。

  1. 在生成的QueryType.php文件中,定义GraphQL查询类型和其字段。在这里,你可以定义一个名为dynamicScope的字段,该字段接受一个参数作为动态作用域的输入。示例代码如下:
代码语言:txt
复制
namespace App\GraphQL\Types;

use GraphQL\Type\Definition\Type;
use Rebing\GraphQL\Support\Type as GraphQLType;

class QueryType extends GraphQLType
{
    protected $attributes = [
        'name' => 'Query',
        'description' => 'The root query type',
    ];

    public function fields(): array
    {
        return [
            'dynamicScope' => [
                'type' => Type::string(),
                'args' => [
                    'parameter' => [
                        'type' => Type::string(),
                    ],
                ],
                'resolve' => function ($root, $args) {
                    // 在这里实现你的雄辩动态作用域逻辑
                },
            ],
        ];
    }
}
  1. 创建一个GraphQL模式文件。在终端中执行以下命令来生成一个模式文件:
代码语言:txt
复制
php artisan make:graphql:mutation DynamicScopeMutation

这将在app/GraphQL/Mutations目录下生成一个DynamicScopeMutation.php文件。

  1. 在生成的DynamicScopeMutation.php文件中,定义GraphQL变动类型和其字段。示例代码如下:
代码语言:txt
复制
namespace App\GraphQL\Mutations;

use GraphQL\Type\Definition\Type;
use Rebing\GraphQL\Support\Mutation;
use Rebing\GraphQL\Support\Facades\GraphQL;

class DynamicScopeMutation extends Mutation
{
    protected $attributes = [
        'name' => 'DynamicScope',
        'description' => 'A mutation to call a dynamic eloquent scope',
    ];

    public function type(): Type
    {
        return Type::string();
    }

    public function args(): array
    {
        return [
            'parameter' => [
                'type' => Type::string(),
                'description' => 'The parameter for the dynamic scope',
            ],
        ];
    }

    public function resolve($root, $args)
    {
        // 在这里实现你的雄辩动态作用域逻辑
    }
}
  1. 定义GraphQL路由。在routes/graphql.php文件中,定义你的GraphQL查询和变动路由。示例代码如下:
代码语言:txt
复制
Route::group([
    'prefix' => 'graphql',
], function () {
    Route::post('/', [
        'as' => 'graphql.query',
        'uses' => '\Rebing\GraphQL\GraphQLController@query',
    ]);
    Route::post('/mutation', [
        'as' => 'graphql.mutation',
        'uses' => '\Rebing\GraphQL\GraphQLController@mutation',
    ]);
});
  1. 现在,你可以通过发送GraphQL请求来调用动态作用域。以下是一个示例GraphQL查询的请求体:
代码语言:txt
复制
{
    "query": "query {\n  dynamicScope(parameter: \"example\")\n}"
}

你可以将上述请求发送到/graphql路由。

以上是在Laravel项目中从GraphQL模式调用一个雄辩的动态作用域的步骤。请注意,这只是一个基本示例,你可以根据自己的需求进行修改和扩展。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

使用 rhai、handlebars、graphql 开发 Rust web 前端(3)- rhai 脚本、资源文件、环境变量等

作为 Rust 内嵌代码使用时,可以和原生 Rust 代码一样,调用其它 crate。尤其是,rhai 支持模块/库动态加载、解析,并且支持最小构建。...类似于 Rust + JavaScript,且具有动态类型。 与 Rust 函数和类型紧密集成。 通过外部作用,将 Rust 变量/常量无损传递到脚本中,无需实现任何特殊特性。... Rust 代码内,轻松调用脚本定义函数。 很少依赖,实际必须具有的仅 2 个第三方 Rust crate。 动态:函数重载、运算符过载、函数指针可动态调度。 动态加载模块,以组织代码库。...Rust web 项目中对 rhai 使用,主要是在模板渲染过程中。作为模板内嵌助手脚本,对获取到 API 数据进行计算。...let username = params[0]; username.len() 这个代码没什么需要解说,如果一定要说点什么,那就是 params[0] 表示含义是:由模板传入脚本一个参数,多个参数类推

53620

混搭 TypeScript + GraphQL + DI + Decorator 风格写 Node.js 应用

这两种模式没有谁比谁好之分,只有适不适合之别: 简单 CRUD、试水型 Demo 项目,用 Active Records 模式 ORM 框架更好 业务流程和规则较多、成熟项目改造用 Data...3.3 MVC架构 整个服务器设计模式,就是经典 MVC 架构,主要就是通过 Controller、Service、Model 、View 共同作用,形成了一套架构体系; ?.../docs/introduction.html 阅读一遍 接下来我们接入开始,然后以如何创建一个 分页(Pagination) 功能为案例来演示在如何在 Midway 框架里使用 GraphQL,以及如何应用上述这些装饰器...案例:利用 GraphQL 实现分页功能 5.1 分页数据结构 使用者角度来,我们希望传递参数只有两个 pageNo 和 pageSize ,比如我想访问第 2 页、每页返回 10 条内容,入参格式就是...到这里一个简单 GraphQL 分页功能就开发完毕,流程步骤来看,一路下来几乎都是装饰器语法,整个编写过程干净利落,很利于后期扩展和维护。 6.

3.3K20

Rust 和 Wasm 融合,使用 yew 构建 web 前端(4)- 获取 GraphQL 数据并解析

今天,我们介绍如何在 yew 开发 wasm 前端应用中,与后端进行数据交互。我们后端提供了 GraphQL 服务,让我们获取 GraphQL 数据并解析吧!...wasm 需要绑定 web API,以发起请求调用和接受响应数据,需要使用 web-sys,但其可以通过 yew 库路径引入,无需加入到依赖。...然后,在 frontend-yew/graphql 文件夹中创建一个文件 all_projects.graphql,描述我们要查询项目数据。...} } 最后,在 frontend-yew/graphql 文件夹中创建一个文件 all_users.graphql,描述我们要查询用户数据。...,可以实现与查询描述文件( all_users.graphql)中查询同名结构体。

8K30

GraphQL最突出架构优势是什么?

在本文中,我们将讨论在未来或现有的项目中使用 GraphQL 都将享受哪些架构优势。 1六边形架构 Alistair Cockburn 在“六边形架构”中提到,我们架构最内层是应用程序和层。...最后,它将我们关注点转向了应用程序和特定于内容。这些内容是不能直接市场购买或下载。 2基础架构组件 GraphQL 服务器和 HTTP 服务器都属于基础架构组件。...,我们可以使用 @client 指令来引用要基于一个客户端模式本地缓存中获取属性。...路由 + 方法组合 请求形式 + 参数 路由 + 方法组合 一个例子是,某人可以很简单地将 创建一个用户 操作 POST /users 移至 POST /users/new。...请求形式 + 参数 一个例子是,一个对 /users/new POST 请求过去只需要一个 email 和一个 password,但现在它还需要一个 username 属性。

2.1K20

BI仪表板数据可视化大屏

因此要实现BI大屏,主要根据我们实际需求决定整体开发工作量。本次,我们就用Wyn Enterprise 作为实例,为大家演示如何在.Net Core项目中实现BI可视化应用集成。...URL集成 在.Net Core项目中使用最多集成方式是URL集成,这种集成方式核心是设置一个参数(QueryString)网址(URL),作为业务系统中某个菜单链接目标地址,或者是作为业务系统页面中某个...API,这样几乎所有界面操作均可通过调用API完成,例如在门户页面中展开某个分类下文档列表时,通过浏览器调试窗格就可以看到实际GraphQL API调用。...操作方法 所有API调用详解,请参考: https://wyn.grapecity.com.cn/WynApiDemo/ API调用示例,如下图: image.png 与REST API不同,GraphQL...不同对象不同操作,都是通过一个统一URL(http://localhost:51980/api/graphql)进行调用;不同是提交数据不一样。

8.2K10

当.Net撞上BI可视化,这3种“套路”你必须知道

因此要实现BI大屏,主要根据我们实际需求决定整体开发工作量。本次,我们就用Wyn Enterprise 作为实例,为大家演示如何在.Net Core项目中实现BI可视化应用集成。...URL集成 在.Net Core项目中使用最多集成方式是URL集成,这种集成方式核心是设置一个参数(QueryString)网址(URL),作为业务系统中某个菜单链接目标地址,或者是作为业务系统页面中某个...API,这样几乎所有界面操作均可通过调用API完成,例如在门户页面中展开某个分类下文档列表时,通过浏览器调试窗格就可以看到实际GraphQL API调用。...操作方法 所有API调用详解,请参考: https://wyn.grapecity.com.cn/WynApiDemo/ API调用示例,如下图: 与REST API不同,GraphQL API不需要为不同对象操作提供不同...不同对象不同操作,都是通过一个统一URL(http://localhost:51980/api/graphql)进行调用;不同是提交数据不一样。

3.1K20

Laravel框架关键技术解析

)即一个没有指定名称函数,经常用做回调函数(callback)参数值 2.匿名函数既可以作为参数传递给函数,也可以做为变量赋值,进而控制函数执行过程;可以从父作用域中继承变量,使用use关键字来继承...,但同时也引入 了另一个严重问题——耦合 3.不应该在类内部固化实例初始化行为,而是转由外部负责,在系统运行期间,将这种依赖关系通过动态注入方式实现,这就是IOC模式设计思想 4.IOC(Inversion...控制反转是将组件间依赖关系程序内部提到外部容器来管理,而依赖注入是指组件依赖通过外部以参数或其他形式注入,两种说法本质上是一个意思 5.Laravel中:Illuminate\Container\Container...B.请求处理管道简介 1.装饰者模式:是在开放—关闭原则下实现动态添加或减少功能一种方式。...-->>调用实例中bootstrap()-->>调用服务容器中registerConfiguredProviders(),配置文件中提取所有的服务提供者 3.缓载服务提供者:对于不是每个请求都需要使用服务只有在需要时才临时进行服务绑定

11.9K20

干货 | 携程基于 GraphQL 前端 BFF 服务开发实践

所有面向外部用户 GraphQL 服务,我们会限制只能调用其他后端 API,以避免出现密集计算或者架构复杂情况。只有面向内部用户服务,才允许 GraphQL 服务直接访问数据库或者缓存。...这种实践模式,只能有限发挥 GraphQL 合并请求、裁剪数据集作用。它仍然是面向数据接口,而非面向数据网络。...如此无限堆砌数据接口,最终仍然是一个发散模型,每增加一个数据消费场景需求,就追加一个接口字段。并且,当某些接口字段参数,依赖其它接口返回值,常常得重新发起一次 GraphQL 请求。...这种将串行调用客户端移到服务端做法可以有效降低端到端次数,是 BFF 层常见优化手段。但是如果我们有多个节点一起查询时,可能会出现同一个接口被调用多次问题。...子节点调用 load(arg) 方法将参数添加到 loader 里,父节点 loader 根据“积累”参数,发起真正请求,并将结果分别下发对应地子节点。

2.6K20

GraphQL-BFF:微服务背景下前后端数据交互方案

如果只有一个 boolean 类型参数,只能满足 true | false 两种场景罢了。 以产品详情接口为例,一种很自然请求参数结构如下: ?...我们可以做一个思想实验。 假设你是一名架构师,你接到一任务,设计一门前端友好查询语言。...当然,也可以调用 RPC 或者 ORM 等方式,别的数据接口或者数据库里获取数据。 因此,实现一个 GraphQL 服务,并不需要挑战当前整个后端体系。...举个例子: 前端需要产品数据时,之前调用产品相关 RESTful API,变成查询产品相关 GraphQL。不过,需要订单相关数据时,可能要查询另一个 GraphQL 服务。...然而,在更复杂真实项目中,我们实际上需要 express、koa 等服务端框架,用中间件模式编写我们服务端处理逻辑,由框架将它们整合为一个requestListener 函数,注册到 http.createServer

3.7K72

干货 | 万字长文全面解析GraphQL,携程微服务背景下前后端数据交互方案

如果只有一个 boolean 类型参数,只能满足 true | false 两种场景罢了。 以产品详情接口为例,一种很自然请求参数结构如下: ?...我们可以做一个思想实验。 假设你是一名架构师,你接到一任务,设计一门前端友好查询语言。...当然,也可以调用 RPC 或者 ORM 等方式,别的数据接口或者数据库里获取数据。 因此,实现一个 GraphQL 服务,并不需要挑战当前整个后端体系。...举个例子: 前端需要产品数据时,之前调用产品相关 RESTful API,变成查询产品相关 GraphQL。不过,需要订单相关数据时,可能要查询另一个 GraphQL 服务。...然而,在更复杂真实项目中,我们实际上需要 express、koa 等服务端框架,用中间件模式编写我们服务端处理逻辑,由框架将它们整合为一个requestListener 函数,注册到 http.createServer

3.6K21

GraphQL-BFF:微服务背景下前后端数据交互方案

如果只有一个 boolean 类型参数,只能满足 true | false 两种场景罢了。 以产品详情接口为例,一种很自然请求参数结构如下: ?...我们可以做一个思想实验。 假设你是一名架构师,你接到一任务,设计一门前端友好查询语言。...当然,也可以调用 RPC 或者 ORM 等方式,别的数据接口或者数据库里获取数据。 因此,实现一个 GraphQL 服务,并不需要挑战当前整个后端体系。...举个例子: 前端需要产品数据时,之前调用产品相关 RESTful API,变成查询产品相关 GraphQL。不过,需要订单相关数据时,可能要查询另一个 GraphQL 服务。...然而,在更复杂真实项目中,我们实际上需要 express、koa 等服务端框架,用中间件模式编写我们服务端处理逻辑,由框架将它们整合为一个requestListener 函数,注册到 http.createServer

1.5K20

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

作为一门主要用于构建 Web 网站动态语言,PHP 不仅可以处理静态页面,更重要功能是处理用户动态请求,这才是一个 Web 2.0 网站最灵动部分,留言板到博客评论、到形形色色社交网站、问答网站...而作为最流行 PHP 框架,Laravel 自然也是为处理用户请求提供了丰富工具集,收集、验证、到过滤、编排,可谓是一应俱全,接下来,我们将通过三四篇教程篇幅来为你详细介绍如何在 Laravel...项目中处理用户请求,首先,我们收集用户请求数据开始。...: Route::post('form', 'RequestController@form'); 注:除此之外,Laravel 还提供了 Request 门面和全局辅助函数 request(),本质都是调用...'); 获取数组输入字段值 有的时候,我们在表单中传递给后端可能是一个数组,比如一些复选框选中,这些表单输入框 name 值通常是 name[], books[],这个时候传递到后端 books

19.7K30

Ruby到Node:重写Shopify CLI,提升开发体验

如果将 Ruby 作为一个依赖,这种思维模式就会被打破,他们就很容易遇到 CLI 因为需要额外步骤而拒绝运行问题。...在基于框架( Rails)目中,框架( MVC)通常会支持这些模式,但我们没有框架。因此,我们必须开发自己模式和机制,并保证开发人员遵循它们。...只有少数情况下,为了符合语言要求,我们才诉诸于类,错误类型。...命令(View):是用户进行交互界面,用户在调用 CLI 时会传递参数和标志。它们职责仅限于解析和验证参数及标志,并提供帮助菜单内容。 服务(Controller):是业务逻辑封装单元。...一个例子是与 Shopify GraphQL API 交互所有函数。 5. 实现端到端测试策略 采用函数式编程和最小化副作用简化了单元测试编写。

37420

【前端必看】2017 年 JavaScript 全面崛起大运势

少即是多 在三巨头之后,能非常有趣发现第四名 Preact。 Preact 是一个 React 小型替代解决方案:有相同 API,却只有 3KB 大小。...但和其他语言都有事实上标准不同( Ruby 有 Ruby on Rails,Python 有 Django,PHP 有 Laravel),目前在 Node.js 上写服务端程序还没有一个大家都认可标准框架...作为 Create React App 一个成功案例,我们可以看 StackBlitz,这是一个在线 IDE,通过 Create React App,让你可以在数秒内浏览器中创建一个应用。...想为语言添加新特性……比如“类型检查”。 有一个很热门问题可以用来区分程序员:你是用类型,还是不用类型? JavaScript 本身带有基本动态类型,但缺乏静态类型。...GraphQL 在未来回顾 GraphQL 历史时,2017 年很有可能会成为一个转折点。

2.7K50

Laravel Eloquent 模型类中使用作用进行查询

「Scope」字面意义上翻译为「作用」,有点不那么好理解,功能上来说,把它看作预置「过滤器」更合适。...调用方式或者过滤器作用范围来说,可以把「作用」分为「全局作用」和「局部作用」。「作用」都是围绕模型类展开,不管是全局作用还是局部作用,都是作用到某个模型类上。...接下来,我们就来演示如何在 Eloquent 模型类上使用「作用」进行查询。...动态作用 此外,Eloquent 模型类还支持「动态作用」,所谓动态作用指的是在查询过程中动态设置预置过滤器查询条件,动态作用和局部作用类似,过滤器方法名同样以 scope 开头,只不过可以通过额外参数指定查询条件...`deleted_at` is null 动态作用调用和移除方式和局部作用一样。 本系列教程首发在Laravel学院(laravelacademy.org)

2.5K20

API接口架构REST vs GraphQL

通过访问一个 URL, 就实现了对接口调用处理。 REST 案例 假设你正在创建一个博客站点, 在首页上,你会显示最新文章摘要,包括标题、图片和简短描述。...与 REST 不同,GraphQL 需要一个模式来告诉客户端和服务器通过 API 允许哪些数据和操作。这些是用 GraphQL 模式语言定义,它是一种与语言无关具有强大类型系统格式。...模式一个重要用途是定义操作,包括读取数据查询和写入数据。...使用 GraphQL,可以模式中删除不推荐使用字段,而不会影响现有查询。这为应用程序提供了对新功能持续访问,并鼓励更清洁、更可维护代码。...GraphQL 通过提供严格类型化模式语言来解决这些问题,接口调用者可以根据自己需要进行查询。 如果未来能有更好设计将两者优点结合,我相信会是最佳解决方案。

1.6K30

3分钟短文:Laravel 编程中优雅地添加定义常量

引言 laravel妥妥到处都是面向对象了,以前流程处理PHP代码,很少见到踪影了, 为什么?大型应用实在是难以维护,所有代码设计必须有规有矩了。今天我们说一说, 如何在代码中定义常量。 ?...比较好一个实践, 是把这些配置参数,写在配置文件内,然后使用laravel框架提供 Config 类,读取这些数据。...所有在程序任何地方,都可以像下面这样调用: Config::get('constants.options'); Config::get('constants.options.option_attachment...唯一需要注意是,你得记得住键名。 类属性 在面向对象代码中,如果常量类型数据作用仅限于某个类,及其继承者, 那么可以将这部分数据定义为类属性,提供后续访问。...如果全局常量,我们推荐写到配置文件;如果是局部作用常量,我们推荐写到类属性内。 Happy coding :-) 我是@程序员小助手,持续分享编程知识,欢迎关注。

1K20

php基础(一)

static 静态方法,是类成员方法,但不需要实例化类可直接使用 $GLOBAL 在函数内使用具有全局作用变量,$GLOBAL['a'] 2.子类重写父类 protected 方法有什么限制?...CGI,通用网关接口,用于WEB服务器和应用程序间交互,定义输入输出规范,用户请求通过WEB服务器转发给FastCGI进程,FastCGI进程再调用应用程序进行处理,php解析器,应用程序处理结果如...9.列举常用设计模式并说明?单例模式,观察者模式等等 单例模式 10.写一段代码,实现PHP内部通知机制,一个属性发生变化时,另外一个类就可以收到通知。...$(document).ready()函数作用是什么? 形成闭包,起到隔离作用作用。...JSONP 原理 AJAX 无法跨是受到“同源政策”限制,但是带有src属性标签(例如、、)是不受该政策限制,因此我们可以通过向页面中动态添加<script

2.1K20

GraphQL 初体验,Node.js 构建 GraphQL API 指南

仅提供一个端点来查询所需所有逻辑。...另一部分涉及实际获取数据,这是通过使用解析器完成,解析器是一个返回字段基础值函数。 让我们看一下如何在 Node.js 中实现解析器。...} } } 这个解析器需要两个参数一个代表父对象(在最初根查询中,这个对象通常是未使用),一个包含传递给你字段参数 JSON 对象。...给定一个 ID 数组,我们将一次性数据库中获取所有这些 ID;同样,后续对同一 ID 调用也将从缓存中获取该项目。要使用 dataloader 来构建这些,我们需要两样东西。...最佳实践 GraphQL 规范中缺少一个方面是缺乏对版本控制模式指导。

8.3K40

Api 开发之include机制

概述 include英译:包含,包括,使成为...一部分 我们在进行API开发时可能会将数据以及与该数据相关数据全部发送给客户端, 文章数据,相关数据有“用户”,“分类”......可以看到,除了返回文章相关数据外,还返回了用户相关数据 这样做不太友好,因为我们不知道客户端是否需要某些数据,这里“用户”。...} 这里主要设计到两个方法 allowedIncludes:指定可被include参数 客户端输入 include=user 可动态返回文章,用户信息 include=user,category...文章 AllowedFilter::exact('category_id'):表示精确过滤字段 我们还可以键入某个scope(查询作用)对数据进一步过滤,本文使用了定义好withOrder作用...,传递默认参数 ]) ->paginate(); 解决办法:为每个模型类添加一个Queries类 在这个Queries类里面键入上面逻辑,控制器使用时只需将该类依赖注入即可

1.3K10
领券