본문 바로가기
SpringBoot

[Spring Boot] 12. REST API (2) - POST method

by 청양호박이 2019. 11. 27.

지난번에 이어서, 이번에는 POST method에 대해서 알아보겠습니다. 이전 내용은 아래 링크로 확인해주세요.

 

2019/11/24 - [SpringBoot] - [Spring Boot] 11. REST API (1) - 개요 및 GET method

 

[Spring Boot] 11. REST API (1) - 개요 및 GET method

REST란 무엇이고, 어떻게 사용하는 거에요?? 아무것도 모르겠어요... ㅠㅠ 당연하다... 개발을 접하고 이것을 처음 접하는 사람은 그야말로 혼돈의 카오스에 사로잡힐 것입니다. 그래서 아주 간단하게 이해하기 쉽..

ayoteralab.tistory.com

 

 

3. POST - /URI


해당 Table에 신규로 추가하고자 하는 정보를 HTTP의 body에 추가해서 API서버로 전송하고 작업을 처리하는 방법입니다. 역시 URI를 통해서는 행위를 표현하지 않고, table의 이름정도로 한정하겠습니다. 그렇다면, 전체적인 구현은 아래와 같이 진행하겠습니다.

 

  • Controller 작성
  • Postman을 통한 API로의 body에 정확한 정보 전송여부 확인
  • Service, Mapper 작성으로 DB에 값 저장
  • 기존에 작성한 Controller 내 GET method로 전체 리스트 확인 

[Controller.java 작성]

RequestMethod는 POST로 지정하고, GET과 유사하게 작성해줍니다. 단, body에 입력된 값을 받아와야 하기 때문에, Spring Annotation을 하나 추가해줍니다. @RequestBody Entity명 entity로 해줍니다. 저는 그냥 간단하게 기존에 작성했던 StationMiseDTO.java를 사용했습니다.

	@ApiOperation(httpMethod = "POST"
			,value = "Station Mise 항목 추가"
			,notes = "Insert Station Mise"
			,response = UserDTO.class
			,responseContainer = "ArrayList")
	@RequestMapping(value = "/stationMise", method = RequestMethod.POST)
	public ResponseEntity<?> insertStationMise(
			@ApiParam(value = "StationMiseDTO", required = true) @RequestBody StationMiseDTO smDTO){
		
		System.out.println(smDTO.toString());

		return null;
	}

수월하게 확인하기 위해서, DTO에 toString method를 자동으로 추가해서... 호출했습니다. 이래서... IDE를 사용하는 거지요~~ (Eclipse에서는 Alt+Shift+S 후에 Generate toString( ) 을 해줍니다.)

 

[StationMiseDTO.java]

public class StationMiseDTO {
	
	private String stationName;
	private String no2Value;
	private String o3Value;
	private String pm10Value;
	private String pm25Value;
	private String dateTime;
	
	public String getStationName() {
		return stationName;
	}
	public void setStationName(String stationName) {
		this.stationName = stationName;
	}
	public String getNo2Value() {
		return no2Value;
	}
	public void setNo2Value(String no2Value) {
		this.no2Value = no2Value;
	}
	public String getO3Value() {
		return o3Value;
	}
	public void setO3Value(String o3Value) {
		this.o3Value = o3Value;
	}
	public String getPm10Value() {
		return pm10Value;
	}
	public void setPm10Value(String pm10Value) {
		this.pm10Value = pm10Value;
	}
	public String getPm25Value() {
		return pm25Value;
	}
	public void setPm25Value(String pm25Value) {
		this.pm25Value = pm25Value;
	}
	public String getDateTime() {
		return dateTime;
	}
	public void setDateTime(String dateTime) {
		this.dateTime = dateTime;
	}
	
	@Override
	public String toString() {
		return "StationMiseDTO [stationName=" + stationName + ", no2Value=" + no2Value + ", o3Value=" + o3Value
				+ ", pm10Value=" + pm10Value + ", pm25Value=" + pm25Value + ", dateTime=" + dateTime + "]";
	}

}

 

 

[Postman을 통한 API로의 body에 정확한 정보 전송여부 확인]

 

해당 프로그램의 설치는 나중에 따로 작성을 해 보겠습니다. 설치가 되어있다는 가정으로 다음과 같이 입력하고 시도를 해봅니다!!!

이제는 Eclipse로 돌아와서 toString으로 잘 console에 나왔는지 확인해봅니다.

크으~ 잘되네요~

 

 

[Service, Mapper 작성으로 DB에 값 저장]

 

이제 DTO에 값이 잘 들어왔으니, Service와 Mapper를 통해서 DB에 Insert를 시켜보도록 하겠습니다. 이 부분은 예전에 그래도 많이 해봤던 내용이라 그냥 가볍게 코드로 대체하겠습니다. (다행히 잘 되네요!!!)

 

[Service.java]

	public Integer insertStationMise(StationMiseDTO smDTO) {
		return userMapper.insertStationMise(smDTO);
	}

[Mapper.java]

	Integer insertStationMise(@Param("mydto") StationMiseDTO smDTO);

파라미터의 alias를 위해서 @Param annotation을 추가해 줍니다.

 

[Mapper.xml]

<insert id="insertStationMise" parameterType="com.example.ayoteralab.main.dto.StationMiseDTO">
<![CDATA[
	INSERT INTO STATION_MISE
		(STATION_NAME, NO2_VALUE, O3_VALUE, PM10_VALUE, PM25_VALUE, DATE_TIME)
	VALUES
		(#{mydto.stationName}, #{mydto.no2Value}, #{mydto.o3Value}, #{mydto.pm10Value}, #{mydto.pm25Value}, #{mydto.dateTime})		
]]>
</insert>

기존과 다른점은 <insert>태그를 사용하고... 인자로는 resultType이 아닌 parameterType으로 지정하고 사용하면 됩니다. 인자는... #{ }로 사용하면 되구용~

 

 

[기존에 작성한 Controller 내 GET method로 전체 리스트 확인]

 

다시 Postman에 위와 동일한 내용으로 Send 버튼을 눌러줍니다. 기존에는 toString( )으로 console로 확인만 해서 DB입력을 위해서는 다시한번 수행을 해야합니다.

 

위에 제가 return값을 Integer로 설정해서 1이 날라왔습니다. 1이 왔다는 것은... 정상적으로 수행됬다는 것이지요~~

그럼, 바로 전에 만들었던 REST API로 전체 list를 불러와 보겠습니다.

 

흐흣 이렇게 정상적으로 수행되었습니다.

 

-Ayotera Lab-

 

 

댓글