본문 바로가기
반응형

Web49

[Spring/Java] JSON 파싱하기 (Jackson 라이브러리) JSON 파싱 - JSON은 Object, Array, Key-Value 형태로 이루어져 있으며 String, Int, Long, Boolean 등의 타입을 지원 - Java에선 JSON을 그대로 사용할 수 없으므로 변환을 하여 사용해야 함. - Jackson 라이브러리를 활용하여 객체 생성 및 변환하여 파싱 1. Jackson 라이브러리 추가하기 // Maven com.fasterxml.jackson.core jackson-databind 버전... // gradle implementation 'com.fasterxml.jackson.core:jackson-databind:버전' 2. 파싱하기(readTree 사용) readTree()를 사용하면 Json의 형태가 key-value 단일 형태이든, Ar.. 2024. 4. 20.
[Spring/Java] curl 명령어로 HTTP 통신하기 Curl(Client Url) - 프로토콜들을 이용해 URL로 데이터를 전송해 서버에 데이터를 보내거나 가져올떄 사용하는 명령어 - 주로 리눅스 환경이나 Postman을 사용할 수 없는 환경에서 사용하는 명령어 GET 요청 curl -X GET http://localhost:8080/~~ POST 요청 1. JSON 일반 데이터 전송 curl -X POST -H "Content-Type: application/json" -d '{"key1":"value1","key2":"value2"}' http://localhost:8080/~ 2. 헤더에 넣어 요청할 경우 (데이터 x) curl -X POST -H "Content-Type: application/json" -H "Authorization: Beare.. 2024. 4. 20.
[Spring/Java] Spring 인터셉터 구현하기 스프링의 여러가지 기능 중 인터셉터 기능을 구현 및 정리해보고자 한다. 앞서 인터셉터 기능을 프론트/리액트를 이용하여구성 해봤으나, 백엔드/스프링에서는 구현해본 경험이 없기에 간략하게 정리하려한다. 코드는 앞서 로그인 구현 시에 작성했던 코드를 사용하였다 Spring 인터셉터란? - HTTP 메서드에서 요청을 가로채서 개발자가 원하는 동작을 추가하는 역할 - 주로 공통 로그 처리, 권한 체크 등의 역할에 사용 (ex : 로그인 해야 이용할 수 있는 페이지) - 로그인 여부에 따른 로그인 페이지 redirect 등 사용 가능 HandlerInterceptor PreHandler() 컨트롤러가 실행되기 전에 실행되며 실행 이전에 요청 정보를 추가하는 경우 사용 return 값은 Boolean 타입으로 적용하.. 2024. 4. 20.
[Spring/Java] 편의성 빼고 로그인 기능 구현하기 (JDBC, H2) Spring 과제 테스트를 준비하기 위해서 Spring 공부를 다시 하면서, 기초되는 부분을 익힐겸 로그인 기능 구현을 목표로 삼았다. 무려 편의성 최고인 Lombok, JPA를 사용하지 않고 구현하려고하니 정말 고통스러웠지만, 어찌저찌 생각한 형태로 구현에 성공했다. 기존과 다르게 InteliJ를 사용하지 않고 VScode로 구현한 경험도 신선한 경험이었다. 기존 프로젝트를 진행하면서 사용했던 코드를 재활용한 것이지만 굉장히 오래걸렸고, 이 과정을 통해 어느 정도 기초 스프링 이해도 증가에 도움이 됐다. 기본 개발 환경 - Java 17 - Spring Boot 2.7.4 - Maven (그냥 Gradle 쓰면 되는데 너무 늦게 깨달았다) - VScode (프로그래머스 내부 IDE 환경이 VScode여.. 2024. 4. 18.
[Spring/Java] JWT 토큰 사용하는 이유 및 구현 방법 (Feat. 세션/쿠키) 프로젝트를 진행하는 과정에서 로그인 토큰 인증 방식을.사용하기 위해 JWT 토큰 인증 방식을 도입했다. 로그인 진행시 필요한 정보(id 등)를 담아서 요청할 필요가 있었다. 이를 원활하게 사용하기 위해 토큰에 인증 정보를 담아 전달하는 방식을 사용하는 JWT를 이용하는 방식이 이후 로직 처리에 있어 편리하게 동작할 것이라고 생각하여 세션과 쿠키 방식이 아닌 토큰을 통한 암화하는 방식을 이용했다. 특히, 정보를 담고 있는 토큰이 있으면 요청, 응답 시마다 DB를 확인할 필요가 없이 토큰에 연결된 저장 정보만으로 보여줄 수있다는 장점와 MSA구조에서는 JWT 사용 시 부하를 감소 시킬 수 있기에 채택했다. Cookie Cookie란? 클라이언트가 웹 사이트에 접속할 때 그 사이트가 사용하고 있는 서버에서 사.. 2023. 11. 23.
[Spring/Java] CORS 이슈 처리 방법 Spring을 사용하여 프로젝트를 진행하는 과정에서 CORS 이슈가 발생했고, 이 과정에서 로컬에선 정상적으로 CORS처리가 됐으나, 배포 환경에서는 오류가 발생하여 원인을 찾느라 애먹었다. 결론부터 말하자면, 내가 작성한 부분이 원인이 아닌 MSA구조로 작성하는 과정에서 게이트웨이에서 CORS가 발생했던 이슈였다. 게이트웨이에서 CORS 처리를 해줬더니 정상 동작했다. CORS(Cross-Origin Resource Sharing) CORS란? 보안 이슈로 인해 웹 페이지에서 리소스에 대한 Cross-origin 요청을 관리하기 위한 보안 메커니즘으로 서버의 동의가 된 요청들에 대해서만 요청할 수 있도록 제한하는 것 모든 데이터 요청을 허용할 경우 데이터 무결성이 보장되지 않으며 다른 사이트에서 원래 .. 2023. 11. 21.
반응형