54일차 항해일지
2021. 11. 5. 20:44ㆍ항해99/TIL
728x90
오늘 한 일
1. Api 제작 별자리 사진과 설명 api 만들기
제작할 api
{
"code" : 200,
"msg" : "성공",
"data" : {
"starImg" : "/image.jpg",
"starName" : "사자자리",
"comment" : "어쩌구저쩌구"
}
}
1. 이미지 저장하기
- 일단 후에
S3
서버에 이미지 파일을 올릴 거지만 아직S3
서버를 만들지 못했으니 - 1차적으로 백엔드 서버에서 띄울 수 있도록
static/image/
의 하위 폴더에 이미지를 저장하였다.
2. DB에 넣기
위는 웹페이지에서 유저가 제작하는 것이 아닌, 개발자가 제공하는 사진임으로 DB에 저장하여 관리하였다.
- star_img의 행은 실제로 서버에 사진이 들어있는 경로이다.
3. ResponseDto를 통해서 api 제작하기
public StarPhotoDto getStarPhoto() {
List<String> currentTime = Timestamped.getCurrentTime(); //현재 년월일 가져오기
String month = currentTime.get(2); //월 MM 가져오기
log.info("month = {}", month);
StarInfo starInfo = starInfoRepository.findByMonth(month);
StarPhotoDto starPhotoDto = new StarPhotoDto(
starInfo.getStarImg(),
starInfo.getStarName(),
starInfo.getComment()
);
return starPhotoDto;
}
}
- 해당 api의 서비스 계층의 내용이다.
- 본 의도대로 현재 월에 관측할 수 있는 별자리를 찾아서 가져온 뒤
- response dto에 담아서 저장한다.
2. 미세먼지를 가져오는 api에서의 예외처리 추가하기
for(int temp = 0; temp < nList.getLength(); temp++){
Node nNode = nList.item(temp);
if(nNode.getNodeType() == Node.ELEMENT_NODE) {
Element eElement = (Element) nNode;
String pm10Value = getTagValue("pm10Value", eElement);
if( pm10Value == null){ //고장으로 관측 값이 없을 때 다음 구역의 값을 가져오게 한다.
continue;
}
if( pm10Value.equals("-")){ //점검으로 관측 값이 없을 때 다음 구역의 값을 가져오게 한다.
continue;
}
DustApiDto newDustApiDto = new DustApiDto(getTagValue("pm10Value", eElement));
log.info("dust = {}", newDustApiDto.getPm10Value());
return newDustApiDto;
}
}
- 서울 지방으로 검색 시
- 서울 여러 개의 관측소 중에서 1개의 값을 기존 코드에서 가져왓다.
- 하지만 해당 관측소가 점검 혹은 고장이면 값으
"-"
이거나 그냥null
값이 뜬다. - 이를 해결하기 위해서 if 문으로 예외 처리를 해주었다.