diff --git a/src/main/java/com/spoony/spoony_server/domain/place/controller/PlaceController.java b/src/main/java/com/spoony/spoony_server/domain/place/controller/PlaceController.java index a3bd105..1172eca 100644 --- a/src/main/java/com/spoony/spoony_server/domain/place/controller/PlaceController.java +++ b/src/main/java/com/spoony/spoony_server/domain/place/controller/PlaceController.java @@ -5,6 +5,8 @@ import com.spoony.spoony_server.common.dto.ResponseDTO; import com.spoony.spoony_server.common.exception.BusinessException; import com.spoony.spoony_server.common.message.PlaceErrorMessage; +import com.spoony.spoony_server.domain.place.dto.PlaceListResponseDTO; +import com.spoony.spoony_server.domain.place.dto.PlaceResponseDTO; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; @@ -18,14 +20,16 @@ import java.net.URI; import java.nio.charset.Charset; +import java.util.ArrayList; +import java.util.List; @RestController @RequestMapping("/api/place") public class PlaceController { @GetMapping(value = "/search") - public ResponseEntity> getPlaceList( - @RequestParam(name = "query") String text, + public ResponseEntity> getPlaceList( + @RequestParam(name = "query") String query, @RequestParam(name = "display", required = false, defaultValue = "5") int display) { // 네이버 지역 검색 API @@ -35,7 +39,7 @@ public ResponseEntity> getPlaceList( URI uri = UriComponentsBuilder .fromUriString("https://openapi.naver.com") .path("/v1/search/local.json") - .queryParam("query", text) + .queryParam("query", query) .queryParam("display", display) .queryParam("start", 1) .queryParam("sort", "comment") @@ -60,8 +64,21 @@ public ResponseEntity> getPlaceList( try { ObjectMapper objectMapper = new ObjectMapper(); JsonNode placeList = objectMapper.readTree(searchResultBody); + List places = new ArrayList<>(); - return ResponseEntity.status(HttpStatus.OK).body(ResponseDTO.success(placeList)); + placeList.get("items").forEach(item -> { + String title = item.get("title").asText().replaceAll("<[^>]*>", ""); // HTML 태그 제거 + String address = item.get("address").asText(); + String roadAddress = item.get("roadAddress").asText(); + String mapx = item.get("mapx").asText(); + String mapy = item.get("mapy").asText(); + + places.add(new PlaceResponseDTO(title, address, roadAddress, mapx, mapy)); + }); + + PlaceListResponseDTO placeListResponseDTO = new PlaceListResponseDTO(places); + + return ResponseEntity.status(HttpStatus.OK).body(ResponseDTO.success(placeListResponseDTO)); } catch (Exception e) { throw new BusinessException(PlaceErrorMessage.JSON_PARSE_ERROR); diff --git a/src/main/java/com/spoony/spoony_server/domain/place/dto/PlaceListResponseDTO.java b/src/main/java/com/spoony/spoony_server/domain/place/dto/PlaceListResponseDTO.java new file mode 100644 index 0000000..86724e9 --- /dev/null +++ b/src/main/java/com/spoony/spoony_server/domain/place/dto/PlaceListResponseDTO.java @@ -0,0 +1,6 @@ +package com.spoony.spoony_server.domain.place.dto; + +import java.util.List; + +public record PlaceListResponseDTO(List diaryList) { +} diff --git a/src/main/java/com/spoony/spoony_server/domain/place/dto/PlaceResponseDTO.java b/src/main/java/com/spoony/spoony_server/domain/place/dto/PlaceResponseDTO.java new file mode 100644 index 0000000..48d2bf3 --- /dev/null +++ b/src/main/java/com/spoony/spoony_server/domain/place/dto/PlaceResponseDTO.java @@ -0,0 +1,8 @@ +package com.spoony.spoony_server.domain.place.dto; + +public record PlaceResponseDTO(String placeName, + String placeAddress, + String placeRoadAddress, + String latitude, + String longitude) { +}