Ошибка метода Get () 500, Внутренняя ошибка сервера при использовании SpringBoot и MongoDB - PullRequest
0 голосов
/ 21 апреля 2020

Я новичок в SpringBoot и MongoDB, я пытался использовать метод GET для поиска всех моих игроков в MongoDB. моя программа работает для всех методов: PUT, POST, DELETE и GET ("/ {ID}), но она не работает для GET (). Я не могу понять, где я допустил ошибку или в чем проблема, потому что я пробовал так много способов, таких Как: изменить порядок и поставить Get () getAllPlayers после getPlayerByID или я использовал @Get ("/"), для этого я получил ошибку 405. Не могли бы вы помочь мне, пожалуйста ?! Мой playerController:

package thesisMongoProject.controller;    

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import thesisMongoProject.Player;
import thesisMongoProject.Repository.PlayerRepository;

@RestController
@RequestMapping("/player")
public class PlayerController {
    @Autowired
    private PlayerRepository repo;

    //Get All Players
    @GetMapping
    public List<Player> getAllPlayers() {
        return repo.findAll();

    }

    //Getting Player ID
    @GetMapping("/{nickname}")
    public Player getPlayerByID(@PathVariable String nickname){
        return repo.findById(nickname).get();
        }





    //Delete Players
    @DeleteMapping
    public String deleteAllPlayers(){
        repo.deleteAll();
        return "Deleted!";      
    }

    //Create Player
    @PostMapping
    public ResponseEntity<?> createPlayer(@RequestBody Player player){

                repo.save(player);
                return ResponseEntity.status(201).body("Created!");


    }

    //Delete player By ID
    @DeleteMapping("/{nickname}")
    public ResponseEntity<?> deletePlayerByID(@PathVariable String nickname){
        try {

            Player p = repo.findById(nickname).get();
            return ResponseEntity.ok(p);

        } catch (Exception e) {
            return ResponseEntity.status(404).body("Not Found!");
        }
    }

    //Update Player By ID
    @PutMapping("/{nickname}")
    public ResponseEntity<?> updatePlayerByID(
            @PathVariable("nickname")String nickname,
            @RequestBody Player player){

        try {
            player.setNickname(nickname);
            repo.save(player);
            return ResponseEntity.ok(player);

        } catch (Exception e) {
            return ResponseEntity.status(404).body("Not Found!");
        }

    }   

}

Ответы [ 2 ]

0 голосов
/ 21 апреля 2020

Я обнаружил проблему Внутри MongoDB, у меня есть база данных с именем palayers, и внутри нее есть коллекция с именем playaer, в которой я ошибся, вместо того, чтобы писать @Document (Collection = "Players"), я написал @Document ( colletion = "игроки") и потому что они кажутся более или менее похожими, я не обратил на них внимания. Спасибо!

0 голосов
/ 21 апреля 2020

Измените порядок методов в вашем контроллере

//Getting Player ID
@GetMapping("/{nickname}")
....

//Get All Players
@GetMapping
...
...