전체 글

전체 글

    Restful API란 무엇인가?

    이 또한 면접에서 질문받았던 내용인데, 이전에는 정말 잘 알고있다고 생각했는데 막상 질문을 받았을 때 Rest한 API가 되기 위한 규칙 외에 진짜 Restful API가 무엇인지에 대해 명확한 답변을 하지 못한 아쉬움에 다시 한번 정리해보고자 한다. RESTful API란? REST는 "Representational State Transfer"의 약자이다. REST API는 REST 아키텍처의 제약 조건을 준수하는 애플리케이션 프로그래밍 인터페이스이다. 자원을 이름(자원의 표현)으로 구분하여 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미한다. 클라이언트, 서버 및 리소스로 구성되었으며 요청이 HTTP를 통해 관리되는 클라이언트-서버 아키텍처 데이터가 요청되어지는 시점에서 자원의 상태(정보)를 전..

    [JUnit] assertThat deprecated

    Test코드를 작성하던 중에, assertThat에 빨간줄이 떠서, 아래와 같이 import했더니 assertThat은 deprecated되었다고 뜬다. import org.junit.Assert.*; 해결 import static org.assertj.core.api.AssertionsForClassTypes.assertThat; assertj를 import한 뒤, assertThat을 사용할 수 있다!

    [Spring Boot][Gradle] 실행 시 Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured. 에러

    [Spring Boot][Gradle] 실행 시 Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured. 에러

    문제 Spring Initializr을 이용하여 프로젝트 생성 후, 추가설정 없이 바로 실행했더니 Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled. 2021-09-06 16:31:50.532 ERROR 20275 --- [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPLICATION FAILED TO START *************************** Description: Failed to configure a DataSource: 'url' att..

    [Datagrip] Test Connection 시, Server returns invalid timezone. Need to set 'serverTimezone' property. 에러

    [Datagrip] Test Connection 시, Server returns invalid timezone. Need to set 'serverTimezone' property. 에러

    문제 localhost에 mysql세팅한 뒤, Datagrip으로 접속하려니 Test Connection에서 Server returns invalid timezone. Need to set 'serverTimezone' property. 이런 에러가 발생했다. 처음보는 에러였는데, 나는 새로 구축한 mysql이 문제인 줄 알고 재설치까지 할...뻔! 했지만 다행히 mysql 문제는 아니었고, Datagrip timezone문제였다.. ^-^ 해결방법 Test Connection을 수행하던 화면에서 상단을 보면 Advanced가 있다. Advanced에서 serverTimezone을 Asia/Seoul로 설정해주면 해결! 바로 General로 돌아가서 Test Connection 해보면, 빠르게 반영되어 ..

    쿠키(Cookie), 세션(Session)이란?

    쿠키(Cookie), 세션(Session)이란?

    쿠키, 세션의 차이점은? 이라는 질문을 기술면접 2번동안, 2번 다 물어보셨었다. 쿠키는 브라우저에 저장되고, 세션은 서버에서 관리한다... 이정도로만 대답을 했었는데 뭔가 시원한 대답은 아니었다..ㅠㅠ 어중간하게 알고있던 것들을 제대로 알기위해 앞으로 기술면접에서 받았던 질문들 위주로 공부해서 포스팅해볼 예정이다! 쿠키, 세션을 사용하는 이유 HTTP의 대표적인 특징 중 하나가 Stateless하다는 것이다. 예를들면, 로그인을 했을 때 다른 페이지로 이동을 하게되면 상태가 유지되지 않기 때문에 사용자가 로그인을 했는지, 누구인지를 다시 잊어버리게 된다. 그래서 이런 상태값을 저장함으로써 사용자의 현재 상태값을 쿠키, 세션의 차이점은? 둘다 Stateful한 경우를 위해 사용되는데, 차이점은 저장위치라..

    [Spring Boot] 카카오 로그인 API 구현 (2) - Access token으로 사용자 정보 가져오기

    [Spring Boot] 카카오 로그인 API 구현 (2) - Access token으로 사용자 정보 가져오기

    *만약 클라이언트 개발자가 따로 있다면 클라이언트 쪽에서 access_token을 전달해주기 때문에 이 포스팅부터 수행하면 된다. 만약 혼자 구현해야한다면 아래 글부터 진행하여 테스트할 수 있다. 카카오 로그인 API 구현(1) https://suyeoniii.tistory.com/79 [Spring Boot] 카카오 로그인 API 구현 (1) - Access token 발급받기 Spring Boot를 이용해서 카카오 로그인을 구현해보았다. Node.js로 구현할 때보다 복잡해보였는데, 구현하고 나니까 그래도 생각보단 덜 복잡했다! 동작 흐름 카카오를 이용한 소셜로그인 구현 Flow이 suyeoniii.tistory.com 이제 access_token을 받았으니, 이 token을 이용해서 카카오 서버에서..

    [Python] .py 백그라운드 실행 (nohup)

    [Python] .py 백그라운드 실행 (nohup)

    파이썬 실행 시, 보통 python filename.py로 파이썬 파일을 실행했을 것이다. 하지만 이렇게 실행했을 때, 이 창을 나가면 종료되어 버린다. 그래서 파이썬 백그라운드 실행하는 법을 알아보니 nohup을 이용하면 된다고 한다. java실행할 때만 사용했었는데, python도 이걸로 가능하다니 반갑다 nohup nohup 사용법은, 원하는 명령어 앞에 nohup을 붙여주고, 백그라운드 실행을 위해 맨 뒤에 &을 붙여주면 된다! 백그라운드 실행 nohup python3 app.py & log의 경우 nohup.out에 기록된다. 로그 안남기기 nohup python3 app.py & > /dev/null 뒤에 > /dev/null을 붙여주면 로그가 안남는다고 한다. (확인은 안해봤다) nohup으..

    [Spring Boot] 카카오 로그인 API 구현 (1) - Access token 발급받기

    [Spring Boot] 카카오 로그인 API 구현 (1) - Access token 발급받기

    Spring Boot를 이용해서 카카오 로그인을 구현해보았다. Node.js로 구현할 때보다 복잡해보였는데, 구현하고 나니까 그래도 생각보단 덜 복잡했다! 동작 흐름 카카오를 이용한 소셜로그인 구현 Flow이다 이건 네이버도 비슷하다! Apple은 조금 다를 듯 1. 클라이언트 쪽에서 로그인을 한다 2. 카카오 서버는 redirect url로 code를 전달해준다 3,4. code를 이용하여 access_token을 발급받는다 5. access_token을 서버로 전송한다 6,7. 서버에서는 받은 access_token을 이용하여 카카오 서버에서 사용자 정보를 받는다 8. 받은 사용자 정보를 이용하여 회원가입 또는 로그인을 진행한다 9. JWT등과 같이 사용자 식별 정보를 클라이언트로 보낸다 혼자 프론트..

    [Springboot][EC2] 로컬에서 빌드하고 빌드파일만 업로드하기

    [Springboot][EC2] 로컬에서 빌드하고 빌드파일만 업로드하기

    원래는 EC2에 코드를 올려서 build 하고, 수행하게 되는데 EC2 사양이 그렇게 좋지 않다보니 무리가 갈때가 있다! 그래서 가끔 EC2가 먹통이 되곤 했다... 그래서 로컬에서 빌드하고, 서버에 업로드해서 사용하면 괜찮다고 해서 시도!! 먼저 로컬에서 EC2에서 빌드하는 것과 같이 빌드를 수행해준다 ./gradlew build 수행하면 프로젝트 폴더에 build 폴더 안에 libs 폴더가 생긴다! libs 폴더 안을 보면 jar 파일이 생성되어 있을 것이다 우리는 이 jar파일만 EC2에 업로드 시켜주면 된다 파일업로드는 Filezila, 사이버 덕 등을 이용하여 EC2에 SFTP접속을 해서 파일업로드를 시켜주면 된다 나는 사이버덕을 사용해보았다 EC2에서 해당 서버의 루트경로인 var/www/~로..

    [Nginx][EC2] 도메인 연결, https 적용, 서브도메인 설정

    [Nginx][EC2] 도메인 연결, https 적용, 서브도메인 설정

    새 프로젝트를 시작하면서 또다시 반복되는 서버 세팅...^-^ 매번 같은 작업을 반복하다보니 따로 정리해두면 좋을거 같다고 생각이 들었다 도메인연결 가비아에서 도메인은 구입해둔 상태이다! 가비아에서 서비스관리 -> DNS툴을 들어간다 구매한 도메인 리스트 중, 연결할 도메인을 체크하고 DNS설정을 누른다 A레코드를 추가해준다 호스트에 각각 www, @를 입력하고, 값/위치에는 연결할 인스턴스의 ip주소를 적어준다 확인, 저장을 눌러준다. 이렇게 하면 domain.com과 www.domain.com이 사용가능하다 이제 Nginx에서 도메인을 설정해주자 etc/nginx/sites-available 경로에 들어가면 default라는 파일이 있다 default 파일을 사용해도 가능하지만, 한 인스턴스에서 여러..