【问题标题】:GraphQL PHP full query pathGraphQL PHP 完整查询路径
【发布时间】:2018-04-13 21:16:04
【问题描述】:

我正在尝试在我的项目中为graphql-php 实施授权。这个想法是有一个用户访问数组,我可以在其中为每个用户组设置对特定查询和突变的访问,并在执行查询之前在 graphql 控制器中实现检查访问方法。

一种方法是自己解析请求,但我想知道是否有人知道如何访问查询的完整路径,正如我在https://webonyx.github.io/graphql-php/error-handling/ 中看到的那样

<?php
[
    'message' => 'My reported error',
    'category' => 'businessLogic',
    'locations' => [
    ['line' => 10, 'column' => 2]
],
    'path' => [
        'path',
        'to',
        'fieldWithException'
    ]
];

【问题讨论】:

    标签: php graphql graphql-php


    【解决方案1】:

    可以通过每个解析器函数获取的ResolveInfo 对象在解析器中访问该路径。文档没有显示,但每个解析器的第四个参数是 ResolveInfo(来自 webonyx 源代码 $resolveFn($source, $args, $context, $info))。简单的得到是:

    function ($root, $args, $context, $info) {
        $path = $resolveInfo->path;
        // your decisioning
    
    }
    

    你会根据它做出决定吗。

    【讨论】:

    • 这有一个小问题,因为在解析功能中,它不会返回查询的完整路径,只返回当前类型的路径。但这仍然比没有好,我可以使用它,非常感谢。
    • 我以为这就是你想要的?有什么选择?
    • 在控制器中获取路径,所以我不必在每个解析中编写“检查”功能,而是在查询执行之前编写一次,但我认为它在 graphql-php 中是不可能的。
    • 对,所以本质上你想要一个查询中所有路径的数组?我认为您最好的选择是编写一个执行查询 AST 的实用程序。这不会太难。话虽如此,我确实觉得我的回答更适合您的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-15
    • 2015-10-24
    • 2020-09-27
    • 2015-11-23
    • 2014-09-10
    • 2017-03-16
    相关资源
    最近更新 更多