我正在尝试学习GraphQL,并试图运行this simple example。我正在研究的是Java部分。我正在使用Gradle进行构建,并且可以正常运行,甚至可以正常运行,只是当我尝试在Web浏览器上访问本地主机时,出现404错误。我对Springboot也不是很熟悉,并且我会在尝试过程中尝试这一点。
我已经使用Spring Initalizr创建了项目。目录结构是这样的:
/ hello-world / src / main / java / com / graphqljava / hello
“ hello”是我创建了一个名为HelloWorld1.java的文件的地方,也是我放置示例代码的地方。 Spring Initalizr在“ hello”(hello / helloworld)中创建了另一个目录,该目录包含一个名为HelloWorldApplication.java的生成的Java文件。我不知道我自己制作和使用自己的文件是否是问题,我主要是根据其他教程的指导来完成的。
如果你们能帮助我弄清楚问题或指出正确的方向,我将非常感激。在这方面,我有点茫然,因为这是最基本的示例,我什至无法使它正常工作。谢谢。
我认为所有依赖关系都是有序的,但是我认为问题出在端点上?
这是我的gradle文件。
plugins {
id 'org.springframework.boot' version '2.1.6.RELEASE'
id 'java'
}
apply plugin: 'io.spring.dependency-management'
group = 'com.graphql-java.hello'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'
repositories {
mavenCentral()
}
dependencies {
compile 'com.graphql-java:graphql-java:11.0'
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
这是Java文件(HelloWorld1.java)
import graphql.ExecutionResult;
import graphql.GraphQL;
import graphql.schema.GraphQLSchema;
import graphql.schema.StaticDataFetcher;
import graphql.schema.idl.RuntimeWiring;
import graphql.schema.idl.SchemaGenerator;
import graphql.schema.idl.SchemaParser;
import graphql.schema.idl.TypeDefinitionRegistry;
import static graphql.schema.idl.RuntimeWiring.newRuntimeWiring;
public class HelloWorld1 {
public static void main(String[] args) {
String schema = "type Query{hello: String} schema{query: Query}";
SchemaParser schemaParser = new SchemaParser();
TypeDefinitionRegistry typeDefinitionRegistry = schemaParser.parse(schema);
RuntimeWiring runtimeWiring = newRuntimeWiring()
.type("Query", builder -> builder.dataFetcher("hello", new StaticDataFetcher("world")))
.build();
SchemaGenerator schemaGenerator = new SchemaGenerator();
GraphQLSchema graphQLSchema = schemaGenerator.makeExecutableSchema(typeDefinitionRegistry, runtimeWiring);
GraphQL build = GraphQL.newGraphQL(graphQLSchema).build();
ExecutionResult executionResult = build.execute("{hello}");
System.out.println(executionResult.getData().toString());
// Prints: {hello=world}
}
}
我只是希望弹出一个简单的消息,但我却得到了
Whitelabel错误页面
此应用程序没有针对/ error的显式映射,因此您将其视为备用。
发生意外错误(类型=未找到,状态= 404)。 没有可用消息
编辑:我也将示例代码复制到了HelloWorldApplication.java文件中,但是仍然遇到相同的问题。