Próbuję uruchomić najprostszy przykład Graphql. Stworzyłem aplikację z inicjalizacją sprężyny i dodałem tylko zależności Graphql. Mój build.gradle
buildscript {
ext {
springBootVersion = '2.1.1.RELEASE'
}
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
implementation('org.springframework.boot:spring-boot-starter-web')
testImplementation('org.springframework.boot:spring-boot-starter-test')
compile 'com.graphql-java-kickstart:graphql-spring-boot-starter:5.3.1'
compile 'com.graphql-java-kickstart:graphiql-spring-boot-starter:5.3.1'
compile 'com.graphql-java-kickstart:voyager-spring-boot-starter:5.3.1'
}
DemoApplication.java
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
Kiedy uruchamiam projekt i trafiam do punktu końcowego /graphql
, zwraca 404
. Czego brakuje w mojej konfiguracji?
2 odpowiedzi
Dokumenty (https://github.com/graphql- java-kickstart/graphql-spring-boot#enable-graphql-servlet) powiedz:
Servlet staje się dostępny w / Graphql, jeśli Graphql-Spring-Boot-Starter dodał jako zależność aplikacji rozruchowej, a fasola Graphqlschema jest obecna w aplikacji.
...a minimalny przykład, do którego prowadzi, wygląda tak:
@SpringBootApplication
public class ApplicationBootConfiguration {
public static void main(String[] args) {
SpringApplication.run(ApplicationBootConfiguration.class, args);
}
@Bean
GraphQLSchema schema() {
return GraphQLSchema.newSchema()
.query(GraphQLObjectType.newObject()
.name("query")
.field(field -> field
.name("test")
.type(Scalars.GraphQLString)
.dataFetcher(environment -> "response")
)
.build())
.build();
}
}
Więc brakuje nam schematu Graphql. Mówi, że jeśli jest jeden, punkt końcowy API zostanie wystawiony automatycznie.
Powodzenia!
Miałem taki sam problem przy użyciu graphiql i Swagger Strona graphiql dała mi błąd 404 na konsoli przeglądarki. Problem polegał na tym, że nie można pobrać biblioteki js z zasobu dostawcy.
Na class SwaggerConfig extends WebMvcConfigurationSupport
Zrobiłem:
@Override
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("swagger-ui.html")
.addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/");
//This is for graphiql works
registry.addResourceHandler("/vendor/**")
.addResourceLocations("classpath:/static/vendor/");
}
Podobne pytania
Nowe pytania
java
Java to język programowania wysokiego poziomu. Użyj tego tagu, jeśli masz problemy z używaniem lub zrozumieniem samego języka. Ten tag jest rzadko używany samodzielnie i jest najczęściej używany w połączeniu z [spring], [spring-boot], [jakarta-ee], [android], [javafx], [hadoop], [gradle] i [maven].
/graphql
? Widzę, że jest to w twoich depsach, ale nie ma dalszej konfiguracji dotyczącej graphql api.