pooney
article thumbnail

Rest API를 구현 하다 보면 사용자로 부터 요청왔을때  특정값을 포함한 uri를 전달해야 하는 상황이 발생할 수 있다. 

이떄 사용하는 것이 ServletUriComponentsBuilder이다.  ServletUriComponentsBuilder를 통해 적절한 URI를 만들고 요청한 사용자에게 특정값을 포함한 URI를 전달 할 수 있다. 

 

 

 

 

ServletUriComponentsBuilder

아래의 방식은 파일업로드 후 파일다운로드 경로를 사용자에게 보내주고자 할 때 자주 사용되는 방법입니다. 지금은 간단한 예제를 만들겠습니다. 

 

 

TestController 

ServletUriComponentsBuilder.fromCurrentRequest()를 통해 사용자가 요청한 Uri를 가져온 다음 path를 통해 원하는 정보를 입력합니다. buildAndExpand에 내가 원하는 값을 넣어 주면 path({변수})에 추가되어 URI가 구성됩니다.  다음 ResponseEntiy를 통해 사용자에게 전달합니다. 

 

@RestController
public class TestController {
	//Jpa 담당 
	@Autowired
    TestRepo repo;
    
    @GetMapping("/user")
    public ResponseEntity<User> user(){
        URI uri = ServletUriComponentsBuilder.fromCurrentRequest() //사용자 요청 uri
                        .path("/{uid}") //buildAndExpand를 통해 얻은 값이 들어옴
                        .path("/cat")  //추가 정보
                        .buildAndExpand(repo.save(User.builder().uid("pooney").password("안녕").build()).getUid())// {uid} 넣어줄 값
                        .toUri(); //uri 생성 
        return ResponseEntity.created(uri).build();  
    }

 

 

 

 

결과

http://localhost:9001/user 를 요청 후 Response Headers의 location 부분을 보면 controller에서 만든 uri가 전달 된것을 확인 할 수 있습니다. 

 

 

 

 

 

 

PostMan으로 요청 할 결과를 보시면 Status코드가 201 Created인 것을 확인 할 수 있습니다. 이를 통하여 적절한 Rest API를 만들 수 있습니다. 

 

 

profile

pooney

@pooney

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!