gpt4 book ai didi

java - 在 Java 中美化 GraphQL 查询字符串

转载 作者:行者123 更新时间:2023-12-01 23:10:35 26 4
gpt4 key购买 nike

我有一个 Java 程序,除其他外,它从 XML 文件读取原始 GraphQL 查询并通过 HTTP 将它们发送到给定端点。问题是服务器只接受正确格式的 GraphQL 查询,这意味着不允许使用额外的空格、换行符等。所以基本上我必须将它们写在一行中,因为任何换行符都会通过添加大量空格来匹配 XML 层次结构(包含查询的元素不是根元素)来破坏整个查询。

正如您所知,单行查询,尤其是长查询,对人类不友好,而且难以阅读。到处都有很多代码格式化程序/美化程序,在线、IDEA、Postman、Insomnia 等内部,所有这些都可以通过单击按钮来完成。

工作 XML 文件(单行查询):

<request>
<url>http://localhost:8080/graphql</url>
<type>GRAPHQL</type>
<body>mutation { login(input: {username: \"user\", password: \"12345\"}) {status}}</body>
</request>

所需的XML文件(多行查询):

<request>
<url>http://localhost:8080/graphql</url>
<type>GRAPHQL</type>
<body>
mutation {
login(input: {username: "user", password: "12345"}) {
status
}
}
</body>
</request>

我该如何处理这种情况?在发送之前,我应该对“body”字符串进行格式化。是否有任何“美化”库,或者我应该编写自定义符号“删除器”?

最佳答案

graphql-java 已经附带了 AstPrinter,它可以漂亮地打印 GraphQL AST 节点。所以你可以先将查询字符串转换为AST节点,然后用它来美化查询字符串:

 String gql = "mutation { login(input: {username: \"user\", password: \"12345\"}) {status}}";
Parser parser = new Parser();
Document doc = parser.parseDocument(gql);
System.out.println(AstPrinter.printAst(doc)); //which should print out a prettified query here

关于java - 在 Java 中美化 GraphQL 查询字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58378076/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com