Método da classe ServletUriComponentsBuilder do spring

Pesquisando sobre api, eu vi que as pessoas fazem o método save da seguinte maneira:

    @PostMapping
    public ResponseEntity<ArticleVO> create(@RequestBody ArticleVO obj) {
    	obj = articleService.save(obj);
    	URI uri = ServletUriComponentsBuilder.fromCurrentRequest().path("/{id}")
    			.buildAndExpand(obj.getId()).toUri();
    	
        return ResponseEntity.created(uri).body(obj);
    

Alguém poderia me explica para que serve:

URI uri = ServletUriComponentsBuilder.fromCurrentRequest().path("/{id}")
    			.buildAndExpand(obj.getId()).toUri();

Eu não consegui entender. O uso do ResponseEntity e do body eu até entendo, acredito que o created é para retornar o status 201, correto? Mas qual o motivo dessa URI? E para que serve cada método chamado a partir do ServletUriComponentsBuilder? E por útlimo, eu poderia mandar minha resposta sem essa uri? tipo:

return ResponseEntity.created().body(obj);

Esta é uma boa prática quando se segue o modelo REST.

Quando se cria um novo recurso, é devolvida uma resposta com o status 201 junto do corpo de resposta e um header chamado Location que contém exatamente a URL que permite fazer a busca pelo recurso que acabou de ser criado.

Este trecho de código trata de criar exatamente este header na resposta, se você removê-lo vai continuar funcionando normalmente, porém o header não será enviado.

Pode ver mais sobre aqui: Location - HTTP | MDN