虽然使用GraphiQL运行良好,但我的老板要求我实现一个用户界面,用户可以通过UI元素(如复选框,地图关系)检查呈现给他们的元素,并获取数据并执行此操作将为此人生成graphql输入,调用API并将结果返回给用户。
所以,基本上这涉及2代。从GraphQL架构生成用户界面并从用户的选择中生成GraphQL输入查询。
我搜索过,但我找不到任何已经这样做的工具。我的服务器在Node中,我正在使用Express GraphQL。我使用https://github.com/graphql-cli/graphql-cli将我的快速模式转换为GraphQLSchema语言,并使用https://github.com/sheerun/graphqlviz/blob/master/cli.js上的内省函数内省了GraphQLSchema语言
我得到的对象是这样的(下面给出了部分模式输出) `
"data": {
"__schema": {
"queryType": {
"name": "Query"
},
"mutationType": {
"name": "Mutation"
},
"subscriptionType": null,
"types": [{
"kind": "OBJECT",
"name": "Query",
"description": null,
"fields": [{
"name": "employee",
"description": null,
"args": [{
"name": "ecode",
"description": null,
"type": {
"kind": "SCALAR",
"name": "String",
"ofType": null
},
"defaultValue": null
}],
`
我正在遍历尝试生成UI的元素,但我很困惑。
最好的方法是什么?提前谢谢。
答案 0 :(得分:2)
对于从内省查询生成ui的部分,我认为响应包含足够的ui足够的数据(每个字段的描述可以用作每个字段的输入框的占位符)。如果您问如何从内省响应中生成动态表单,您可以查看从json到html表单创建变换器的其他项目以获取灵感/用法(请查看https://github.com/brutusin/json-forms/blob/master/README.md#cdn)。对于复杂字段(非原始类型),您可能需要做更多工作。
对于从ui生成模式,您可以使用任何查询构建器工具,并根据用户输入构建查询。每个组合框将映射到特定的SCHEMANAME.FIELDNAME,值将是输入框的值。
我希望它有所帮助。顺便说一句,这听起来像是一个有趣的工具,所以如果你成功了,请告诉我们!