#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
Я хотел бы знать, что я делаю неправильно или что я пропустил. Спасибо, что прочитали это и попытались решить это заранее!