목록프로그래밍 (409)
쌓고 쌓다
내 상황은 이랬다. 다음과 같이 위도 경도를 로그를 찍어서 위치 정보를 잘 가져오는지 확인하고 있었다. 아마 이 글을 보는분들은 가상 폰 또는 실제 폰에서 위치 정보를 가져오지 못하는 상황일 것이다. 다음과 같이 onnLocationChanged 콜백 함수를 등록했음에도 불구하고 말이다. 문제의 부분은 다음과 같다. locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 500, 0, locationListener); locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 500, 0, locationListener); GPS_PROVIDER과 NETWORK_PR..
form 데이터는 2가지가 존재한다. application/x-www-form-urlencoded multipart/form-data 1번은 일반적인 key, value 형태 데이터이며, 2번은 multipart는 파일과함께 다양한 정보들을 다루는 데이터이다. Multipart? 정리하자면. 클라이언트와 서버간에 전송할때 여러 종류의 데이터를 다루기위한 방식이다. 멀티파트 요청에는 여러개의 파트로 나눠지며 각 파트마다 데이터를 포함할 수 있다. 각 파트는 헤더와 바디로 이뤄진다. 파트에는 메타 데이터, 바디에는 실제 데이터가 포함된다. POSTMAN으로 다음과 같이 JSON과 파일을 같이 전송할 수 있다. 이것을 서버에서 처리해주면 되는것이다. @RequestPart? 기존에 사용하던 @RequestPa..
테이블을 만드는데 장소의 타이틀, 주소는 VARCHAR로하고 설명은 왜 TEXT로 하는게 좋을까? 궁금증이 생겼다. CREATE TABLE location ( id BIGINT AUTO_INCREMENT PRIMARY KEY, latitude DOUBLE, longitude DOUBLE, title VARCHAR(255), address VARCHAR(255), description TEXT ) https://medium.com/daangn/varchar-vs-text-230a718a22a1 VARCHAR vs TEXT 개요 medium.com 위의 글을 참고하여 간단히 언제 맞게 써야할지 정리하자면 VARCHAR는 최대 길이가 크기 않는 경우! TEXT는 최대 길이가 큰 경우! 왜 VARCHAR를 크게..
서버에 위도 경도를 쿼리 파라미터로 요청하면 요청한 위도 경도를 통해 특정 범위내에 속하는 데이터를 응답으로 보내는 로직이 필요했다! 어떻게 할까? 먼저 location 테이블은 다음과 같이 생겼다. CREATE TABLE location ( id BIGINT AUTO_INCREMENT PRIMARY KEY, latitude DOUBLE, longitude DOUBLE, title VARCHAR(255), address VARCHAR(255), description TEXT ) 위도 경도가 DOUBLE 타입이다. LocationRepository @Repository public interface LocationRepository extends JpaRepository { List findByLatitu..
카카오 앱으로 로그인하면 다음 화면으로 잘 넘어가지만. 카카오 계정으로 로그인할때 continue 버튼을 눌러도 진행이 안되는 경우가 있다. AndroidManifest.xml에 다음 코드를 추가해주자.
Retrofit을 쓰며 아래의 제네릭을 사용하여 공통 응답 형식을 만들었다. public class CommonResponse { private String status; private T data; private String message; } 레트로핏 사용시 Call안에 CommonResponse만 작성했는데 @POST("/comments/{inquiry_id}") Call addComment(...); CommonResponse로 변경했더니 올바르게 타입을 캐스팅한다. @POST("/comments/{inquiry_id}") Call addComment(...);
스프링은 API 예외 처리를 위해 @ExceptionHandler 어노테이션을 제공한다. ExceptionHandlerExceptionResolver는 @ExceptionHandler를 처리한다. 먼저, API 요청시 응답으로 보낼 객체를 정의해보자. ErrorResult @Data @AllArgsConstructor public class ErrorResult { private String code; private String message; } 그리고 컨트롤러에서 요청에 대한 응답으로 예외를 던져서 에러를 발생시켜 ErrorResult를 응답으로 보내보자. @RestController public class ApiExceptionV2Controller { @GetMapping("/members/{id..
@ResponseBody 어노테이션 또는 @RestController 어노테이션을 사용하여 객체를 반환하면 HttpMessageConverter가 JSON으로 바꿔 응답을 해준다. @GetMapping("/testAPI") public Inquiry test() { Inquiry inquiry = new Inquiry(); inquiry.setId(777L); inquiry.setTitle("제목"); inquiry.setContent("내용"); inquiry.setRegDate(LocalDateTime.now()); inquiry.setName("작성자"); return inquiry; } ResponseEntity를 사용하여 응답을 만들 수 있지만 예외가 발생했을때 응답의 형태가 달라질 수 있고, ..