RESTful CRUD 구성_3

dwanGim·2022년 9월 29일
0

spring_basic

목록 보기
41/41

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 데이터를 대입시킴으로서

앱, 테블릿, 등등의 여러 기기들과 같은 하드웨어로 파라미터를 전달할 수 있게 되었습니다.

서버에서 모든 기기에 통용할 수 있는 자료를 사용하기 때문에 수많은 하드웨어 기기에 상호작용할 수 있을 겁니다.

profile
배울 게 참 많네요.

0개의 댓글