ABOUT ME

Today
Yesterday
Total
  • [Restuful 학습] - PostMapping 설명 및 예제
    SPRING/WEBSERVICE 2020. 8. 3. 21:47
    package com.example.demo.user;
    
    import java.util.ArrayList;
    import java.util.Date;
    import java.util.Iterator;
    import java.util.List;
    
    import org.springframework.stereotype.Service;
    
    @Service
    public class UserDaoService {
    
    	private static List<User> users = new ArrayList<>();
    	private static int usersCount =3;
    	
    	static {
    		
    		users.add(new User(1, "bins1",new Date(),"pass1","701010-1111111"));
    		users.add(new User(2, "bins2",new Date(),"pass2","801010-1111111"));
    		users.add(new User(3, "bins3",new Date(),"pass3","901010-1111111"));
    	}
    	
    	public User save(User user) {
    		if(user.getId() == null) {
    			user.setId(++ usersCount);
    		}
    		users.add(user);
    		return user; 
    	}
    	
    }
    ​
    package com.example.demo.user;
    
    import java.net.URI;
    import java.util.List;
    
    import org.springframework.http.ResponseEntity;
    import org.springframework.web.bind.annotation.DeleteMapping;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.PathVariable;
    import org.springframework.web.bind.annotation.PostMapping;
    import org.springframework.web.bind.annotation.RequestBody;
    import org.springframework.web.bind.annotation.RestController;
    import org.springframework.web.servlet.support.ServletUriComponentsBuilder;
    
    import javax.validation.Valid;
    
    @RestController
    public class UserController {
    
    	private UserDaoService service;
    	
    	public UserController(UserDaoService service) {
    		this.service = service;
    	}
    	
    	@PostMapping("/users")
    	public ResponseEntity<User> createUser(@Valid @RequestBody User user) {
    
    		User savedUser = service.save(user);
    
    		URI location = ServletUriComponentsBuilder.fromCurrentRequest()
    		.path("/{id}")
    		.buildAndExpand(savedUser.getId())
    		.toUri();
    		
    		return ResponseEntity.created(location).build();
    	}
    	
    }
    

     

    위 소스는 새로운 User를 생성할 때 호출하는 createUser 메서드 로직이다.

    @PostMapping을 사용하여, POST방식 통신으로 Request가 왔을 때 메서드가 수행된다.

     

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

    의 location은 로컬에서 실행시 아래와 같이 찍힌다.

    location -> http://localhost:8080/users/5 

     

    ResponseEntity는 Http 응답에 대한 정보를 갖고 있는 객체이다.

    .created를 통하여 201번 응답을 내려준다.

     

     

     

     

     

     

Designed by Tistory.