Spring Hateoas Игнорирование параметров запроса - PullRequest
0 голосов
/ 27 сентября 2018

Spring Hateoas не создает соответствующую ссылку для следующего сопоставления запроса:

@GetMapping("/member/{id}")
public MemberResource getMemberById(@RequestParam String id){
     Member member = MemberService.getMemberById(id);
     return new MemberResource(member);
}


public class MemberResource extends ResourceSupport{

     public MemberResource(Member member){
  add(linkTo(methodOn(MemberController.class).getMember(member.getId)).withSelfRel());
        add(linkTo(methodOn(TeamsController.class).getTeams(memberId)).withRel("teams"));
        }}


        @GetMapping("/teams")
        public List<TeamResource> getTeamsById(@RequestParam String id)          {
            List<Team> teams = teamService.getTeamsById(id);
            return teams.stream().map(TeamResource::new).collect(Collectors.toList());
        }

При вызове / member / 12345 ожидается возврат:

{
     member: {
       //omitted for brevity
     },
    _links:[
       {
         href: .../members/12345
       },
       {
         href: ../teams?memberId = 12345
       }

      ]
}

Но вместо этого он возвращает:

{
     member: {
       //omitted for brevity
     },
    _links:[
       {
         href: .../members/12345
       },
       {
         href: ../teams/12345
       }

      ]
}

Почему это так?Фильтр полностью игнорируется, хотя я использую @RequestParam.Любой совет приветствуется в этом вопросе.

1 Ответ

0 голосов
/ 27 сентября 2018

Отказ от ответственности: никогда не использовал Spring HATEOAS.

Но на первый взгляд кажется, что вы смешиваете два типа URL-параметров:

  • @PathVariable для таких переменных пути, как.../teams/TEAM_ID
  • @RequestParam для параметров запроса, таких как .../teams?id=TEAM_ID
...