【发布时间】:2020-04-18 21:40:29
【问题描述】:
我知道我们可以使用 /graphiql 端点来测试创建或部署的 GraphQL API。
- 我需要使用 GraphQL API,该 API 已经使用 Java 代码。我该怎么做。
- 如何使用类似 postman 的应用程序测试 GraphQL 端点,或者甚至可以。
【问题讨论】:
我知道我们可以使用 /graphiql 端点来测试创建或部署的 GraphQL API。
【问题讨论】:
在后端代码中使用 graphql API,需要多个步骤,例如。
import com.coxautodev.graphql.tools.SchemaParser;
import javax.servlet.annotation.WebServlet;
import graphql.servlet.SimpleGraphQLServlet;
@WebServlet(urlPatterns = "/graphql")
public class GraphQLEndpoint extends SimpleGraphQLServlet {
public GraphQLEndpoint() {
super(SchemaParser.newParser()
.file("schema.graphqls") //parse the schema file created earlier
.build()
.makeExecutableSchema());
}
}
这里有一个详细的指南:Graphql-java-backend-implementation
是的,可以使用邮递员发送请求。您可以简单地复制正文中的模式。 Doing GraphQL request using Postman
【讨论】:
根据您的情况,使用 Spring RestTemplate 可能是最简单的事情。
public class Person {
@JsonProperty("query")
public final String query = "mutation($name:String, $gender:String, $age:Int) { updateDetails (name: $name, gender: $gender, age: $age) }";
@JsonProperty("variables")
public final Map<String, String> variables;
...
}
...
(new RestTemplate()).postForEntity("http://example.com/graphql", new Person("David", "male", 12));
通过避免 Spring 并使用 HttpClient,使用 StringBuilder 构建相同的 JSON 文档,可以更简单。
或者Apollo Andoid 可以为您自动生成客户端代码。
【讨论】:
Map<String, String>,以及 Resttemplate 类型。
一个例子,为我工作...... 用户名和密码错误:) 但是,URL 没问题...
这样,我不使用 RestTemplate、任何罐子等。
private static void test_LivePharma() {
try {
URL url = new URL("https://stores-hml.funcionalmais.com/graphql");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("GET");
conn.setRequestProperty("Content-Type", "application/json");
String input="{\"query\":\"mutation{createToken(login:\\\"112233\\\",password:\\\"112233\\\"){ token}}\\n\"}";
OutputStream os = conn.getOutputStream();
os.write(input.getBytes());
os.flush();
BufferedReader br = new BufferedReader(new InputStreamReader(
(conn.getInputStream())));
String output;
System.out.println("Output from Server .... \n");
while ((output = br.readLine()) != null) {
System.out.println(output);
}
conn.disconnect();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
【讨论】: