java 用 Postman 和Spring查询参数

dldeef67  于 2022-11-27  发布在  Java
关注(0)|答案(1)|浏览(141)

有人能向我解释一下为什么要给这个控制器:

@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)));
    }

}

并且该PM请求

404页面未找到
如果我在查询参数中添加方括号,就会得到一个400BADREQUEST

iszxjhcz

iszxjhcz1#

你需要从@GetMapping以及第一个 Postman 截图请求中删除/?user={userId},并像下面这样构造它。

@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足够聪明,可以根据它的声明自动装箱变量类型。

相关问题