Параметры запроса с почтальоном и Spring

Может кто-нибудь объяснить мне, почему данный контроллер:

@RestController
@RequestMapping("/gamification")
public class GamificationController {

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

    @Autowired
    private GameServiceImpl gameService;


    @GetMapping("/retrieve-stats/?user = {userId}")
    ResponseEntity<GameStats> getUserStats(@RequestParam("userId") String userId){
        logger.debug("UserId is {}", userId);
        return ResponseEntity.ok(gameService.retrieveStatsForUser(Long.parseLong(userId)));
    }

}

и этот запрос в личку

Я получаю 404 NOT FOUND?

и если я добавлю скобки к параметру запроса, я получаю 400 BAD REQUEST

RequestParam имя userId не user. Вы должны попробовать с userId вместо user. URL должен быть http://localhost:8080/gamification/retrieve-stats?userId=123

Kumaresh Babu N S 26.11.2022 15:28
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
1
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам нужно удалить /?user = {userId} из @GetMapping, а также из запроса на снимок экрана 1-го почтальона и построить его, как показано ниже.

@GetMapping("/retrieve-stats")
ResponseEntity<GameStats> getUserStats(@RequestParam("userId") String userId){
    logger.debug("UserId is {}", userId);
    return ResponseEntity.ok(gameService.retrieveStatsForUser(Long.parseLong(userId)));
}

PS: И вам не нужно приводить его Long.parseLong, вы можете объявить параметр с типом @RequestParam("userId") Long userId, Spring достаточно умен, чтобы автоматически упаковать тип переменной на основе его объявления типа.

Другие вопросы по теме