Мой PathVariables не работает - PullRequest
       1

Мой PathVariables не работает

0 голосов
/ 29 августа 2018

Здравствуйте, я хотел бы написать метод Get с Spring Rest, но мой код не работает, код ниже;

@RequestMapping(value = "userRight/hasRightForOperation", method = RequestMethod.GET, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
    public ResponseEntity<?> hasRightForOperation(@PathVariable(value = "loginName") String loginName,
            @PathVariable(value = "vendorId") String vendorId,
            @PathVariable(value = "accessRightCode") String accessRightCode) {
        return new ResponseEntity<>(hasRightForOperation(loginName, vendorId, accessRightCode), HttpStatus.OK);

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 29 августа 2018
@RequestMapping(value = "userRight/hasRightForOperation", method = RequestMethod.GET, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<?> hasRightForOperation(@PathVariable(value = "loginName") String loginName,
        @PathVariable(value = "vendorId") String vendorId,
        @PathVariable(value = "accessRightCode") String accessRightCode) {
    return new ResponseEntity<>(hasRightForOperation(loginName, vendorId, accessRightCode), HttpStatus.OK);

Вы используете @PathVariable, но в вашем отображении URL нет параметров. Вы можете исправить как

@RequestMapping(value = "userRight/hasRightForOperation/{loginName}/{vendorId}/{accessRightCode}", method = RequestMethod.GET, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<?> hasRightForOperation(@PathVariable(value = "loginName") String loginName,
        @PathVariable(value = "vendorId") String vendorId,
        @PathVariable(value = "accessRightCode") String accessRightCode) {
    return new ResponseEntity<>(hasRightForOperation(loginName, vendorId, accessRightCode), HttpStatus.OK);

Вы можете изменить порядок отображения параметров URL. Поэтому, если вы не хотите отображать URL, вы можете получить параметры с тегами @RequestParam.

@GetMapping(value = "userRight/hasRightForOperation", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<?> hasRightForOperation(@RequestParam("loginName") String loginName,
                                              @RequestParam("vendorId") String vendorId,
                                              @RequestParam("accessRightCode") String accessRightCode) {
    return new ResponseEntity<>(hasRightForOperation(loginName, vendorId, accessRightCode), HttpStatus.OK);
}
0 голосов
/ 29 августа 2018

Вы должны получить переменные пути в URL, чтобы добавить все параметры, как показано ниже.

Изменить

@RequestMapping(value = "userRight/hasRightForOperation", method = RequestMethod.GET, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)

до

@RequestMapping(value = "userRight/hasRightForOperation/{loginName}/{vendorId}/{accessRightCode}", method = RequestMethod.GET, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)

Я рекомендую вам использовать @RequestParam для этого.

См. Это: @ RequestParam vs @ PathVariable

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...