第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

GraphQL 解析器使用 Laravel Lighthouse 返回字符串而不是 JSON

GraphQL 解析器使用 Laravel Lighthouse 返回字符串而不是 JSON

PHP
繁星點點滴滴 2023-07-07 10:55:58
您好,我正在嘗試創(chuàng)建一個返回 JSON 的解析器,我將此庫與自定義標量一起使用https://github.com/mll-lab/graphql-php-scalars我使用 JSON 標量,如下所示:schema.graphql:input CustomInput {    field1: String!    field2: String!}type Mutation {    getJson(data: CustomInput): JSON @field(resolver: "App\\GraphQL\\Mutations\\TestResolver@index")}測試解析器.phppublic function index($rootValue, array $args, GraphQLContext $context, ResolveInfo $resolveInfo){       $data = array('msg'=>'hellow world', 'trueorfalse'=>true);    return \Safe\json_encode($data);    }GraphQL 游樂場mutation{ getJson(data: { field1: "foo", field2: "bar" })}------------ response------------{  "data": {    "getJson": "\"{\\\"msg\\\":\\\"hello world\\\",\\\"trueorfalse\\\":true}\""  }}正如你所看到的,它返回一個字符串,而不是 JSON...我做錯了什么?
查看完整描述

1 回答

?
溫溫醬

TA貢獻1752條經(jīng)驗 獲得超4個贊

您必須知道您希望收到什么回應。在解析器中,您必須返回一個數(shù)組,因此在您的示例中只需返回一個數(shù)組return $data。

那么問題來了,你期望什么...

  1. 您期望得到一個字符串化的 JSON。然后你可以使用 JSON 標量定義mll-lab/grpahql-php-scalars

  2. 您期望 JS 對象方式的 JSON。然后你必須使用不同的 JSON 標量定義。


對您來說還有一個小改進:查詢和突變不需要@field指令。如果您將字段的 CamelCased 名稱放置在特定名稱空間中(App\GraphQL\Queries對于查詢字段和App\GraphQL\Mutations突變字段。這些是默認值,您可以在配置中更改它們),Lighthouse 可以自動為您找到解析器。

所以對于你的例子你可以簡單地寫

type Mutation {

? ? getJson(data: CustomInput): JSON

}

<?php


namespace App\GraphQL\Mutations;


class GetJson

{

? ? public function __invoke($rootValue, array $args, GraphQLContext $context, ResolveInfo $resolveInfo)

? ? {

? ? ? ? $data = array('msg'=>'hellow world', 'trueorfalse'=>true);

? ? ? ? return $data;

? ? }

}


查看完整回答
反對 回復 2023-07-07
  • 1 回答
  • 0 關(guān)注
  • 201 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號