GraphQL是一种API技术,旨在描述现代Web应用程序的复杂嵌套数据依赖性。
你能用 Postman / Curl 创建一个新的 Weaviate 系列吗?
我想要一个 Postman 路由来在 Weaviate 云上创建一个新集合。它可以是 REST 或 graphQL,并不关心。 有了图表,我可以像这样执行 GET: { 得到 { 项目 {
当我尝试获取所有记录时,GraphQL 返回错误消息“无法查询字段...”
我已经安装了包 rebing/graphql-laravel 版本 5.1.4。当我尝试通过邮递员传递查询以获取所有产品时,我收到错误 “无法查询字段\”产品\&
我可以从Java SDK获取交易类型,但无法从GraphQL获取交易类型。任何人都可以建议我如何使用 GraphQL API 获取事务类型。 GraphQL 查询(抛出错误...
GraphQL 使用 Lighthouse 中的规则验证枚举
在 Lighthouse 中我有一个像这样的枚举 在 Lighthouse 中我有一个像这样的枚举 <?php namespace App\Enums; use GraphQL\Type\Definition\Description; #[Description(description: 'Size')] enum Size: string { case S = 's'; case M = 'm'; case L = 'l'; case XL = 'xl'; } 在服务提供商中我这样注册: $typeRegistry->register(new PhpEnumType(Size::class)); 这一切都很好。 现在,对于某些输入,我想验证它,以便只有 L 和 XL 对 mySize 有效 我在想这样的事情 input SomeInput { mySize: Size @rules(apply: ["in:L,XL"]) } 但这会引发错误 "statusCode": 500, "debugMessage": "Object of class App\\Enums\\Size could not be converted to string", "file": "\/var\/www\/html\/vendor\/laravel\/framework\/src\/Illuminate\/Validation\/Concerns\/ValidatesAttributes.php", 有没有办法在不创建自己的自定义规则的情况下完成此任务? 由于似乎没有任何方法可以仅使用 Lighthouse 提供的内容进行检查,因此我最终创建了自己的自定义规则: <?php declare(strict_types=1); namespace App\Rules; use BackedEnum; use Closure; use Exception; use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Support\Arr; use Illuminate\Support\Facades\Validator; use Illuminate\Validation\Validator as ValidationValidator; use ReflectionClass; class InEnum implements ValidationRule { public static function register(): void { Validator::extend('in_enum', self::class . '@passes'); Validator::replacer('in_enum', function ($message, $attribute, $rule, $parameters, $validator) { $data = $validator->getData(); $value = Arr::get($data, $attribute); return (new self)->message($value, $parameters); }); } /** * @var array<int,string> $parameters */ private array $parameters; /** * @param array<int,string> $parameters */ public function __construct(array $parameters = []) { $this->parameters = $parameters; } /** * Get the validation error message. * * @return string */ public function message(BackedEnum $value, array $parameters): string { return __('general.validation.in_enum', ['enumClass' => (new ReflectionClass($value))->getShortName(), 'enumValue' => strtoupper($value->value), 'validValues' => preg_replace('/, ([^,]*)$/', ' or $1', implode(', ', $parameters))]); } /** * Check if the rule passes based on the given arguments. * @param string $attribute * @param BackedEnum $value * @param array<int,string> $parameters * @return bool */ public function passes(string $attribute, BackedEnum $value, array $parameters, ValidationValidator|null $validator = null): bool { return in_array(strtoupper($value->value), $parameters); } /** * Run the validation rule. * @param string $attribute * @param mixed $value * @param Closure(string): PotentiallyTranslatedString $fail * @return void */ public function validate(string $attribute, mixed $value, Closure $fail): void { throw new Exception('This functionality has not been implemented yet!'); } } 可以像这样在AppServiceProvider的启动中注册: /** * Bootstrap any application services. */ public function boot(): void { InEnum::register(); } ..像这样使用: input SomeInput { mySize: Size @rules(apply: ["in_enum:L,XL"]) }
我正在使用带有 NestJS 的代码优先方法来处理 GraphQL,并使用 Nx 设置 monorepo。 schema.gql 仅在我运行服务器时生成,而在 CI 期间我无法执行此操作。这对于...来说不切实际
在下面的示例代码中,我尝试使用 graphql 查询,并且必须传递从查询中的命令行参数获取的字符串值: 包主 进口 ( “字节&
使用 jest 的集成测试会跳过用户身份验证,并通过 NestJS 中 grapql 中解析器的所有测试用例。 对于“category.resolver.ts”中的解析器: 导入 { 参数、突变、解析...
在 Lighthouse 中我有一个像这样的枚举 在 Lighthouse 中我有一个像这样的枚举 <?php use GraphQL\Type\Definition\Description; #[Description(description: 'Size')] enum Size: string { case M = 'm'; case L = 'l'; } 在服务提供商中我这样注册: $typeRegistry->register(new PhpEnumType(StringSize::class)); 在某些输入中我想像这样使用它: input SomeInput { mySize: Size = null someOtherArgment: String = null } 但是用这个输入进行突变会给我这个错误: "message": "Undefined property: GraphQL\\Language\\AST\\NullValueNode::$value", "exception": "ErrorException", "file": "/var/www/html/vendor/nuwave/lighthouse/src/Schema/AST/ASTHelper.php", "line": 166, 由于某种原因,我无法将 null 设置为任何枚举值的默认值。 如果我省略默认的 null 并仅发送 null 作为值,则一切正常,因此枚举为 null 的事实不是问题,默认的 null 才是问题。 我调整了 Nuwave\Lighthouse\Schema\AST\ASTHelper.php,现在它看起来像这样: // if ($argumentType instanceof EnumType) { if ($argumentType instanceof EnumType && !($defaultValue instanceof NullValueNode)) { assert($defaultValue instanceof EnumValueNode); $internalValue = $argumentType->getValue($defaultValue->value); assert($internalValue instanceof EnumValueDefinition); return $internalValue->value; } 这个简单的调整效果非常好,我现在可以将 null 设置为默认值,没有任何问题,但由于这需要我更改 Lighthouse 源代码,所以我想找到一个更好的替代方案。 有没有办法在不更改源代码的情况下将枚举的默认值设置为null,或者这只是 Lighthouse 中的一个错误? 在尝试了多种使用解析器和指令来规避该问题的可能性之后,我发现它们都不是简单的解决方案。 相反,我最终使用以下方法复制并覆盖 ASTHelper.php: 覆盖使用 Composer 安装的库中的类的策略 目前效果很好。只需要小心未来的任何 Lighthouse 更新
如何在 FastAPI GraphQL API 中实现特定状态代码的错误处理
如何使用 FastAPI 和 Strawberry 处理 GraphQL API 中状态代码(404、422、500、401 和 403)的错误? 我正在使用 FastAPI 和 Strawberry 开发 GraphQL API,我需要实现...
Graphql Flutter Ferry 如何从响应中获取标头
我正在使用 Ferry 来对 GraphQL 服务器进行一些查询。我遇到的一个问题是我需要能够从 cookie/标头获取访问令牌/刷新令牌。我没有看到...
为什么我的 GraphQL 链接在 WordPress 中显示查询错误
我在我的 WordPress 仪表板上安装了 WPGraphQL 插件,但我尝试通过 mysite/graphql 访问它 我收到这个错误 {“errors”:[{“message”:“GraphQL 请求必须包含在
当使用突变约定时,该方法的输出是单个对象: 公开课变异 { [使用突变约定] 公共用户? UpdateUserNameAsync([ID] Guid userId, 字符串用户...
我正在尝试在服务器上实现基于 GraphQL WebSocket 的@subscription(使用 NestJS @subscription)。服务器托管在 AWS ECS 上并位于 ALB 后面。 我们目前有一个 AWS API GW
我正在使用 gqlgen,我想向查询解析器添加一个新方法。添加的方法看起来像这样: 类型查询{ ... Foo(bar: Int!): Foo ... } Foo 的类型已经声明...
来自服务器的额外属性:输入处的 fdprocessedid 在 Graphql 和 JSON 中未更新
我正在使用 Next.js 、 typescript 和 Graphql 。我正在尝试通过 apollo 服务器将数据添加到本地 json 文件。有 2 个问题 我收到警告“来自这些的额外属性...
如何从 graphql 查询的 Contentful 内容类型获取 SYS 数据?
我需要通过 pageContext 将 sys.id 传递到我的 props 中。我该如何抓住这一点?如果我在 graphql 查询中的任何位置添加 sys{id} ,它就会崩溃。 返回新的 Promise((解决, 拒绝) => { 常量
尝试使用 GraphQL 从 Monday.com 中的特定列获取值
我有一个列名称“XYZ”,我需要从板上的所有组中获取值/数据 询问 { 板(ID:12345){ 项目 { ID 姓名 列值...
序列化 Java Map<String, Object> 以创建动态 GraphQL 负载字符串
我正在使用 Java 构建一个 REST 应用程序,该应用程序需要动态构建 GraphQL 有效负载以发送到 GraphQL API。 我们将收到一个 String entityType = "MyEntity" 和一个 Map 我正在使用 Java 构建一个 REST 应用程序,该应用程序需要动态构建 GraphQL 有效负载以发送到 GraphQL API。 我们将收到一个 String entityType = "MyEntity" 和一个 Map<String, Object> myMap,可能如下所示: { "blobUrl": "myurl.com", "accountId": 12345, "user": { "id": 4, "name": "username" } } 它可能有许多其他具有不同类型值的键,因此我无法事先创建一个模板来指示需要绑定哪些变量。 我们提前了解 GraphQL 有效负载的所有信息是,它将采用以下格式: mutation { Create%s(%s) } 有了这些信息,我想生成以下 GraphQL 负载: mutation { CreateMyEntity( blobUrl: "myurl.com" accountId: 12345 user: { id: 4 name: "username" } ) } 我可以通过手动循环 myMap 并使用 StringBuilder 构建有效负载来做到这一点,但我想知道是否有更好的或预先存在的方法可以做到这一点。 我已经查遍了,没有发现任何不涉及明确定义变量及其类型的模板的内容。 我相信您专注于自己构建查询字符串。 这是自定义序列化的示例: 入口点 这包含了 main 方法。 package org.example.graphql; public class Runner { public static void main(String[] args) throws Exception { GraphQLSerializer entitySerializer = new GraphQLMutationSerializer("CreateMyEntity"); String payload = entitySerializer.serialize(jsonInput); System.out.printf("Formatted properly? %b%n", payload.equals(expectedGraphQL)); } private static final String jsonInput = """ { "blobUrl": "myurl.com", "accountId": 12345, "user": { "id": 4, "name": "username" } } """; private static final String expectedGraphQL = """ mutation { CreateMyEntity( blobUrl: "myurl.com" accountId: 12345 user: { id: 4 name: "username" } ) } """.trim(); } 界面 这是一个用于序列化的接口。 package org.example.graphql; import com.fasterxml.jackson.core.JsonProcessingException; public interface GraphQLSerializer { String serialize(String jsonInput) throws JsonProcessingException; } 实施 这里是我们解析 JSON 并格式化它的地方。 package org.example.graphql; import java.util.Map; import java.util.stream.Collectors; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; public class GraphQLMutationSerializer implements GraphQLSerializer { private final ObjectMapper objectMapper = new ObjectMapper(); private final String mutationName; private final int indentSize; public GraphQLMutationSerializer(String mutationName, int indentSize) { this.mutationName = mutationName; this.indentSize = indentSize; } public GraphQLMutationSerializer(String mutationName) { this(mutationName, 4); } @Override @SuppressWarnings({ "unchecked" }) public String serialize(String jsonInput) throws JsonProcessingException { // Parse the input JSON string into a Map using Jackson Map<String, Object> inputMap = objectMapper.readValue(jsonInput, Map.class); // Format the body and indentation String body = buildArguments(inputMap, indentSize, indentSize); String indentation = indent(indentSize); return String.format("mutation {\n%s%s(\n%s\n%s)\n}", indentation, mutationName, body, indentation); } private static String buildArguments(Map<String, Object> map, int indentSize, int currentIndent) { return map.entrySet().stream() .map(entry -> String.format( "%s%s: %s", indent(currentIndent + indentSize), entry.getKey(), formatValue(entry.getValue(), indentSize, currentIndent + indentSize))) .collect(Collectors.joining("\n")); } private static String formatValue(Object value, int indentSize, int currentIndent) { if (value instanceof String) { return "\"" + value + "\""; } else if (value instanceof Number || value instanceof Boolean) { return value.toString(); } else if (value instanceof Map) { return String.format( "{\n%s\n%s}", buildArguments((Map<String, Object>) value, indentSize, currentIndent), indent(currentIndent)); } else { throw new IllegalArgumentException("Unsupported value type: " + value.getClass()); } } private static String indent(int level) { return " ".repeat(level); } }
这是另一个不完全理解这个问题的人提出的 CORS 问题,因为他只使用框架;) 我正在使用 nuxt3 加上 nuxt-graphql-client 我的阿波罗服务器
如何在 Python 中从 URL 获取 GraphQL JSON 数据?
我正在尝试从 URL 获取 GraphQL 数据: https://bet.hkjc.com/ch/racing/wp/ 我尝试过使用Python的requests库发出POST请求,但我不知道如何构造请求......