215. RESTFul Web Services with Spring MVC (POST ) - dkkahm/study-springfamework5 GitHub Wiki
DTO
@Data
@NoArgsConstructor
@AllArgsConstructor
public class CustomerDTO {
private String firstname;
private String lastname;
@JsonProperty("customer_url")
private String customerUrl;
}
Service
@Override
public CustomerDTO createNewCustomer(CustomerDTO customerDTO) {
Customer customer = customerMapper.customerDtoToCustomer(customerDTO);
Customer savedCustomer = customerRepository.save(customer);
CustomerDTO returnDto = customerMapper.customerToCustomerDTO(savedCustomer);
returnDto.setCustomerUrl("/api/v1/customers/" + savedCustomer.getId());
return returnDto;
}
Controller
@PostMapping
public ResponseEntity<CustomerDTO> createNewCustomer(@RequestBody CustomerDTO customerDTO) {
return new ResponseEntity<CustomerDTO>(customerService.createNewCustomer(customerDTO), HttpStatus.CREATED);
}
Test
@Test
public void createNewCustomer() throws Exception {
CustomerDTO customer = new CustomerDTO();
customer.setFirstname("Fred");
customer.setLastname("Flintstone");
CustomerDTO returnDTO = new CustomerDTO();
returnDTO.setFirstname(customer.getFirstname());
returnDTO.setLastname(customer.getLastname());
returnDTO.setCustomrUrl("/api/v1/customers/1");
when(customerService.createNewCustomer(customer)).thenReturn(returnDTO);
mockMvc.perform(post("/api/v1/customers")
.contentType(MediaType.APPLICATION_JSON)
.content(asJsonString(customer)))
.andExpect(status().isCreated())
.andExpect(jsonPath("$.firstname", equalTo("Fred")))
.andExpect(jsonPath("$.customer_url", equlTo("/api/v1/customers/1")));