Я создаю API, который получает следующие входные данные и обеспечивает следующий вывод. ![enter image description here](https://i.stack.imgur.com/PIJC7.png)
Так что мне нужно иметь функцию для догадок. До сих пор мне не довелось тестировать мой код.
Когда я отправляю сообщение POST (используя POSTMan) как таковое http://localhost:8080/guess с телом {"game":"klubxb", "guess":"a"}
. У меня Content-type
установлено application/json
, а тело raw
с {"game":"lmzxmn","guess":"c"}
Это ответ:
{
"timestamp": "2018-04-28T00:40:29.141+0000",
"status": 500,
"error": "Internal Server Error",
"message": "No message available",
"path": "/guess"
}
Функция, которую я определил для догадок:
@RequestMapping(value = "/guess", method = RequestMethod.POST, consumes = "application/json", produces = "application/json")
public Game makeGuess(@RequestBody Guess gameAndLetter, HttpSession session) throws GameDoesNotExistException, InvalidCharacterException{
String game = gameAndLetter.getGame();
String guess = gameAndLetter.getGuess();
Game g = getGame(game,session);
String gameId = g.getId();
if(gameId.equals(game) && guess.length() > 0) {
boolean correct = compareWords(guess, g);
if(!correct){
g.incIncorrect_guesses();
}
g.setStatus();
}
else{
if(!gameId.equals(game)) {
throw new GameDoesNotExistException(game);
}
else{
throw new InvalidCharacterException(guess);
}
}
g = getGame(game,session);
return g;
}
Я получаю исключение NullPointerException со стороны сервера:
https://pastebin.com/sczmbDri
Это код для getGame:
// Find an existing game
private Game getGame(String id, HttpSession session) throws GameDoesNotExistException{
List<Game> games = (List<Game>) session.getAttribute("games");
Game g = null;
for(int i = 0; i < games.size(); i++){
g = games.get(i);
if(g.getId().equals(id)){
break;
}
}
if (g == null) {
throw new GameDoesNotExistException(id);
}
return g;
}