본문 바로가기

(2)

Gradle5.x에서 Lombok 적용안되는 이슈

Gradle 5.x 버전에서 Lombok이 실행되지 않는 현상이 있다. 이전에도 다른 프로젝트를 진행하다가 결국 그래들을 4.X 버전으로 다운그레이드하게 만들었다... 이번에 공부하면서 해결책을 찾아서 적용해보고자 했다. 아래의 사이트에서 제시한 방법이 롬복이 제대로 실행되게하였다. 참고: https://eblo.tistory.com/70 2019031801-Spring boot에서 Gradle 5.x 빌드 시 Lombok 관련 컴파일 오류 처리 환경 - gradle-5.2.1 - spring boot 2.1.3.release - jdk 1.8 - eclipse Gradle 빌드시 Lombok으로 처리하던 getter, setter, log 쪽이 모두 컴파일 오류가 납니다. 구글 검색을 해보고 annot..

RESTful API 특징과 규칙

이동욱 님의 '스프링 부트와 AWS로 혼자 구현하는 웹 서비스' 책을 차근차근 따라가면서 웹 프로젝트를 진행하고 있는 중에 괄호안의 REST 규약이라는 단어의 정의를 잘 몰랐는데 웹 과정 수업을 들으면서 언뜻? 언급돼었던 기억이 났다. 생각이 난 김에 REST(?)란 무엇인지 알아보고 가는 시간을 가지기로 했다. REST API 웹 어플리케이션에서 제공하는 모든 자원을 URI를 할당하여 활용하는 방식 GET, POST, PUT, DELETE 가 대표적이다. 생겨난 이유 하드웨어와 소프트웨어의 발전으로 인해 프레임 워크 / 라이브러리의 발전과 앱이 등장했고, 클라이언트와 서버의 분리로 생겨났습니다. 하나의 어플리케이션에서 클라이언트와 서버를 관리하던 추세에서 앱의 등장이 있었고 확장성과 안정..

프로그래밍 공부/WEB

Gradle5.x에서 Lombok 적용안되는 이슈

728x90

 

Gradle 5.x 버전에서 Lombok이 실행되지 않는 현상이 있다. 이전에도 다른 프로젝트를 진행하다가 결국 그래들을 4.X 버전으로 다운그레이드하게 만들었다... 이번에 공부하면서 해결책을 찾아서 적용해보고자 했다. 아래의 사이트에서 제시한 방법이 롬복이 제대로 실행되게하였다. 

참고:  https://eblo.tistory.com/70

 

2019031801-Spring boot에서 Gradle 5.x 빌드 시 Lombok 관련 컴파일 오류 처리

환경 - gradle-5.2.1 - spring boot 2.1.3.release - jdk 1.8 - eclipse Gradle 빌드시 Lombok으로 처리하던 getter, setter, log 쪽이 모두 컴파일 오류가 납니다. 구글 검색을 해보고 annotationProcessor, comp..

eblo.tistory.com

 

증상

아래와 같이 User 클래스에 Lombok을 이용하여 Getter, Builder를 설정하였고, 이를 테스트해보는 과정에서 아래와 같은 오류가 발생하였다. 

 

Build의 문제라고 판단하였다. (간단한 예제였기 때문에 의심의 여지가 없었다!) dependency 설정을 이리저리 바꿔봤지만 문제가 없음을 파악했고, 이전에도 비슷한 문제가 있어서 찾아본적이 있어 Gradle의 버전과의 충돌문제라고 생각하고 찾아보았다. 참고 사이트에서 버전 문제를 해결하는 방법을 알려줬는데

Before

 

After

 

이전의 'compile group: 'org.prijectlombok', name: 'lombok', version: '1.18.10' ' 을 주석처리하고 빨간색 상자안의 4개의 의존성을 추가했다.

그랬더니

정상적으로 User의 결과값이 나왔다. (추가적으로  @ToSring Builder를 사용했다) 

 

728x90

'프로그래밍 공부 > WEB' 카테고리의 다른 글

RESTful API 특징과 규칙  (0) 2019.12.18
프로그래밍 공부/WEB

RESTful API 특징과 규칙

728x90

이동욱 님의 '스프링 부트와 AWS로 혼자 구현하는 웹 서비스' 책을 차근차근 따라가면서 웹 프로젝트를 진행하고 있는 중에 <"컨트롤러에서 맵핑된 방식으로 js에서도 매핑이 되어야 한다. (이는 REST 규약에 맞게 설정된 것이다.)"> 괄호안의 REST 규약이라는 단어의 정의를 잘 몰랐는데 웹 과정 수업을 들으면서 언뜻? 언급돼었던 기억이 났다. 생각이 난 김에 REST(?)란 무엇인지 알아보고 가는 시간을 가지기로 했다.

REST API

웹 어플리케이션에서 제공하는 모든 자원을 URI를 할당하여 활용하는 방식

GET, POST, PUT, DELETE 가 대표적이다.

생겨난 이유

하드웨어와 소프트웨어의 발전으로 인해 프레임 워크 / 라이브러리의 발전과 앱이 등장했고, 클라이언트와 서버의 분리로 생겨났습니다. 하나의 어플리케이션에서 클라이언트와 서버를 관리하던 추세에서 앱의 등장이 있었고 확장성과 안정성을 위해 분산 애플리케이션과 API 서버가 일반화되고 있다.

작성 시 지켜야 할 규칙

  1. 복수 명사를 사용한다
    ex) users

  2. GET(read), POST(create), PUT(update), DELETE(delete) 각각의 기능을 지킨다.
    ex) GET / user/123? delete : GET을 사용하고 삭제를 요청하면 안 된다.

  3. POST로 arguments를 보내지 않도록 한다
    ex) RESTful API 보안은 HTTP header에 인증정보를 포함하여 https로 처리하는 방법 과
    ex) Aouth2가 있다

  4. Sub-Resource를 관계 설정을 위해 사용한다
    ex) GET /users/123/friends : 유저 123의 친구목록을 보여준다.
    ex) GET /users/123/friends/1 : 유저 123의 친구 1번을 보여준다

  5. camlCase 표기법을 사용한다
    ex) 단봉낙타표기법 : selectName
    ex) 스네이크표기법 : select_Name

  6. HATEOAS를 사용한다 : link를 제공하여 동적으로 URL을 관리하는 방법이다

{  
     "name" : "kim"  
     "link" : [{  
                    "rel" : "self",  
                    "href" : "http://localhost:8080/addressServer"  
                }]  
}
  1. Filtering을 지원한다
    ex) GET /users?name=kim

  2. 순서 정렬
    ex) GET /users?sort=-name(내림차순),+address(오름차순) +와-로 구분

  3. field selection : 원하는 필드만 볼 수 있게 API 되어야 한다
    ex) GET /users?fields=name,age,address

  4. paging : 몇 개의 데이터를 보여줄것인지 정한다.
    ex) GET /users?offset=10&limit=5

  5. 페이징시 사용자 전체 개수를 보낼 때는 custom HTTP header : x-Total-Count로 보낸다

  6. 버전 관리를 한다. v로 시작
    ex) /address/api/v1

  7. Error처리해서 에러 이유를 되돌려준다.
    ex)
    200 OK
    201 CREATED
    400 BAD REQUEST
    500 INTERNAL SERVER ERROR

  8. 보안으로 session은 사용하지 않고 매 Request마다 인증한다.

  9. HTTPS만 사용한다.

  10. Query String을 사용한다.

지켜야 할것들이 많기 때문에 익숙해지기 위해서는 의식적으로 적응을 해야할 것같다.

728x90

'프로그래밍 공부 > WEB' 카테고리의 다른 글

Gradle5.x에서 Lombok 적용안되는 이슈  (0) 2020.03.15