GraphQL с ошибкой типа проверки Java Spring boot для FieldUndefined

#java #spring #graphql

#java #весна #graphql

Вопрос:

Я новичок в GraphQL и работаю над созданием объекта и получением экземпляра этого объекта по атрибуту. Объект называется UserProfile, для которого я определил схему следующим образом:

 type UserProfile{
    id:String!
    username:String!
    // A huge list of other attributes
}

type Query {
    getUserProfile(username:String!):UserProfile!
}

type Mutation {
    addUserProfile(username:String!):Boolean!
}
  

Я также определил для него контроллеры, которые реализуют GraphQLQueryResolver и GraphQLMutationResolver соответственно для типов запросов и мутаций. Код для них:

 @Component
public class UserProfileGraphQLMutationController implements GraphQLMutationResolver {
    private static final Logger logger = LoggerFactory.getLogger(UserController.class);

    @Autowired
    private UserProfileRepository userProfileRepository;

    @Autowired
    private UserRepository userRepository;

    @Transactional
    public Boolean addUserProfile(String username) {
        logger.info("Searching for user: " username);
        User user = userRepository.findByUsername(username);
        UserProfile userProfile = new UserProfile();
        // Setting fields to null or blanks here
        userProfile.setUsername(username);

        UserProfile savedUserProfile = userProfileRepository.insert(userProfile);
        URI uri = ServletUriComponentsBuilder.fromCurrentRequest().path("/users/{username}").buildAndExpand(savedUserProfile.getUsername()).toUri();
        ResponseEntity obj = ResponseEntity.created(uri).build();
        return obj.getStatusCode().equals("200");
    }
}



@Component
public class UserProfileGraphQLController implements GraphQLQueryResolver {

    private static final Logger logger = LoggerFactory.getLogger(UserController.class);

    @Autowired
    private UserRepository userRepository;

    @Autowired
    private UserProfileRepository userProfileRepository;

    @Transactional
    public UserProfile getUserProfile(String username) {
        logger.info("Fetching Profile for User: " username);
        return userProfileRepository.findByUsername(username);
    }
}


  

Однако, когда я пытаюсь запросить его с помощью postman, я получаю ошибку fieldUndefined. Я могу использовать аналогичные запросы и мутации для других объектов, которые у меня есть в приложении. Мутации и запросы, которые я использую для их создания, следующие:

 mutation {
    addUserProfile(username:"MummyGupta")
}

query {
    getUserProfile(username:"MummyGupta"){
        username
        posts
    }
}

  

Ошибка при получении:

  • «сообщение»: «Ошибка проверки типа FieldUndefined: поле ‘getUserProfile’ в типе ‘Query’ не определено @ ‘getUserProfile'»,
  • «описание»: «Поле ‘getUserProfile’ в типе ‘Query’ не определено»,
  • «validationErrorType»: «FieldUndefined»,
  • «QueryPath»: [ «getUserProfile» ],
  • «ErrorType»: «Ошибка проверки»,
  • «путь»: null,
  • «расширения»: null

Я хотел бы знать, что я делаю неправильно или что я пропустил. Спасибо, что прочитали это и попытались решить это заранее!