• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

method patch 설정시 404에러

24.01.13 00:38 작성 조회수 230

1

- id: user-service
  uri: lb://USER-SERVICE
  predicates:
    - Path=/user-service/**
    - Method=PATCH
  filters:
    - RemoveRequestHeader=Cookie
    - RewritePath=/user-service/(?<segment>.*), /$\{segment}
    - AuthorizationHeaderFilter

 

이렇게 작성했는데요
@postmapping("/user/test")
@patchmapping("/user/test")
포스트는 잘동작하는데 패치는 404가 납니다
뭐가 문제일까요?

답변 2

·

답변을 작성해보세요.

0

안녕하세요, 이도원입니다.

요청하신 내용첢 Patch 처리를 위해 아래와 같이 테스트 해 봤습니다.

apigate-service 에는 올려주신 설정을 그대로 사용하였습니다.

@PatchMapping("/users")
public ResponseEntity<ResponseUser> updateUser(@RequestBody RequestUser user) {
    ModelMapper mapper = new ModelMapper();
    mapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);

    UserDto userDto = mapper.map(user, UserDto.class);
    userService.createUser(userDto);

    ...
}

@PatchMapping("/users/{userId}")
public ResponseEntity updateUser(@PathVariable("userId") String userId, @RequestBody RequestUser user) {
    UserDto userDto = userService.getUserByUserId(userId);
    ...

위 코드 내용 처럼 user-servie에 추가된 메소드에 대해 PATCH /user-service/users 와 PATCH /user-service/users/{USER-ID} 모두 각각의 메소드로 잘 실행는 것을 확인하였습니다.

  • PATCH /user-service/users --> 위 코드 내용 상 회원 가입 처리

  • PATCH /user-service/users/{USER-ID} --> 회원 수정 작업 처리

작업하신 내용은 크게 문제가 없어 보이는데, user-service의 컨트롤러 및 api 테스트 어떤 오류가 발생하였는지 추가로 공유해 주시면 원인을 다시한번 찾아 보도록 하겠습니다.

감사합니다.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.01.15

안녕하세요, 인프런 AI 인턴입니다.

kim미소파파님의 문제를 URI 라우팅 설정과 관련하여 살펴보겠습니다. 문제의 정확한 원인 파악을 위해 여러 가능성을 고려해야 합니다만, 기본적으로 두 가지 측면에서 접근해볼 수 있습니다.

  1. Method Predicate의 사용 방법이 잘못되었을 가능성: Gateway에서 정의한 Method=PATCH가 올바르게 동작하지 않을 수 있어, PATCH 메서드에 대한 요청이 @PatchMapping으로 정의된 엔드포인트로 라우팅되지 않는 문제가 발생할 수 있습니다.

  2. Spring MVC 설정 문제일 수 있습니다: @PatchMapping이 정의된 Controller가 올바른 URL 경로와 HTTP 메서드로 설정되었는지 확인이 필요합니다. PATCH메서드에 부적절한 처리가 구성되어 있으면 404 에러가 발생할 수 있습니다.

이와 관련하여, Spring MVC에서 HTTP 메서드 PATCH 지원이 제대로 설정되어 있는지 확인하시고, 정확한 문제 해결을 위해 추가적인 정보가 필요할 경우 Spring Boot의 문서를 참고하여 HTTP Method Predicate에 대한 설정을 검토해볼 것을 추천드립니다.

기본적인 Spring MVC 구성과 HTTP 메서드 설정에 대한 추가 정보는 다음 문서에서 확인할 수 있습니다:

만약 Gateway 설정의 문제가 아니라면, PATCH 메서드를 적절하게 처리하기 위한 Controller의 구성을 다시 한번 확인해주시길 바랍니다.

postman으로 PathMapping사용시 정상적으로 동작하는데

gateway에서 호출할때는 404가 나는거라서

- id: user-service
 uri: lb://USER-SERVICE predicates: 
- Path=/user-service/** 
- Method=PATCH filters: 
- RemoveRequestHeader=Cookie 
- RewritePath=/user-service/(?<segment>.*), /$\{segment} 
- AuthorizationHeaderFilter

이렇게 설정하는게 틀린게 아닌거 같은데요