REST Controller
위와 같이
RESTcontroller를 생성합니다.
사용할 서비스 객체를 선언하고 어노테이션을 연결해줍니다.
@Log4j
@RestController
@RequestMapping("/countries")
public class CountriesController {
@Autowired
private CountriesService service;
@GetMapping(value="/list",
produces= {MediaType.APPLICATION_ATOM_XML_VALUE,
MediaType.APPLICATION_JSON_UTF8_VALUE})
public ResponseEntity<List<CountriesVO>> getList() {
ResponseEntity<List<CountriesVO>> entity = null;
log.info(service.getCountries());
try {
entity = new ResponseEntity<>(
service.getCountries(), HttpStatus.OK);
} catch (Exception e) {
e.printStackTrace();
entity = new ResponseEntity<>(HttpStatus.BAD_REQUEST);
}
return entity;
} // getList END
} // controller END
이후 위와 같이 countries의 리스트를 불러오는 메서드를 get방식으로 작성했습니다.
YARC를 통한 테스트
YARC! 를 이용해서 테스트를 수행하겠습니다.
컨트롤러에 맞는 주소를 입력하고 get mapping으로 json데이터를 요청했습니다.
결과 화면
모든 countries 테이블의 row들을 JSON으로 불러오는데 성공했습니다.
이제 모든 CRUD를 지체없이 테스트 해보겠습니다.
controller 완성
package com.ack.controller;
@Log4j
@RestController
@RequestMapping("/countries")
public class CountriesController {
@Autowired
private CountriesService service;
@GetMapping(value="/list",
produces= {MediaType.APPLICATION_ATOM_XML_VALUE,
MediaType.APPLICATION_JSON_UTF8_VALUE})
public ResponseEntity<List<CountriesVO>> getList() {
ResponseEntity<List<CountriesVO>> entity = null;
log.info(service.getCountries());
try {
entity = new ResponseEntity<>(
service.getCountries(), HttpStatus.OK);
} catch (Exception e) {
e.printStackTrace();
entity = new ResponseEntity<>(HttpStatus.BAD_REQUEST);
}
return entity;
} // getList END
@PostMapping(value="", consumes="application/json",
produces= {MediaType.TEXT_PLAIN_VALUE})
public ResponseEntity<String> insert(@RequestBody CountriesVO vo) {
ResponseEntity<String> entity = null;
try {
service.insertCountries(vo);
entity = new ResponseEntity<String>("SUCCESS", HttpStatus.OK);
} catch (Exception e) {
entity = new ResponseEntity<String>(e.getMessage(), HttpStatus.BAD_REQUEST);
}
return entity;
} // insert END
@RequestMapping(method = {RequestMethod.PUT},
value="/{country_id}",
consumes="application/json",
produces= {MediaType.TEXT_PLAIN_VALUE})
public ResponseEntity<String> update(
@RequestBody CountriesVO vo,
@PathVariable("country_id") String country_id){
ResponseEntity<String> entity = null;
try {
vo.setCountry_id(country_id);
service.updateCountries(vo);
entity = new ResponseEntity<String>("SUCCESS", HttpStatus.OK);
log.info("여기는 컨트롤러 : " + vo);
} catch (Exception e) {
e.printStackTrace();
log.info("여기는 컨트롤러 : " + vo);
entity = new ResponseEntity<String>(e.getMessage(), HttpStatus.BAD_REQUEST);
}
return entity;
} // update END
@DeleteMapping(value="/{country_id}",
produces = {MediaType.TEXT_PLAIN_VALUE})
public ResponseEntity<String> delete (
@PathVariable("country_id") String country_id) {
ResponseEntity<String> entity = null;
try {
service.deleteCountries(country_id);
entity = new ResponseEntity<String>(
"SUCCESS", HttpStatus.OK);
} catch (Exception e) {
entity = new ResponseEntity<String>(
e.getMessage(), HttpStatus.BAD_REQUEST);
}
return entity;
} // delete END
} // controller END
POST 방식 INSERT 결과창
PUT 방식 UPDATE 결과창
DELETE 방식 DELETE 결과창
REST CRUD 구성 후
4가지 방식의 http 프로토콜을 이용해 CRUD를 해보았습니다.
이렇게 url 자체에 JSON 데이터를 대입시킴으로서
앱, 테블릿, 등등의 여러 기기들과 같은 하드웨어로 파라미터를 전달할 수 있게 되었습니다.
서버에서 모든 기기에 통용할 수 있는 자료를 사용하기 때문에 수많은 하드웨어 기기에 상호작용할 수 있을 겁니다.