포스트맨 환경(Environments) 설정 포스트맨은 한 개 이상의 변수들(variables)을 저장해놓을 수 있는 환경(Environments)을 설정할 수 있다. 사이드바의 Environments 탭에서 + 버튼을 누르면 새로운 환경을 만들 수 있다. 예를 들어 [그림 2]와 같이 개발(dev), 운영(prod)환경을 따로 구성할 수 있다. 이렇게 환경을 설정해두고 해당 환경에 여러 변수들을 저장해놓으면 환경이 바뀔때마다 일일히 변수값을 변경해주지 않아도 된다. 오른쪽 위 화면에서 본인이 원하는 환경을 선택할 수 있다. 환경변수(Environments Variables) 설정 환경을 선택하면 해당 환경에 환경변수들을 설정할 수 있다. 예를 들어 호출하고 싶은 도메인 주소를 저장할 host라는 변수를..
Authorization API를 사용하다 보면 클라이언트의 요청이 보안적으로 안전한지 검증하는 과정이 있다. API 호출을 할 수 있는 권한이 있는지, 해당 데이터에 접근할 수 있는지 검증하는 것이다. 예를 들어 유저의 권한을 체크하는 Token 방식도 Authorizaion의 타입 중 하나다. 포스트맨에서는 Authorization 탭을 통해 authorization을 설정할 수 있다. 이번 포스팅에서는 자주 사용되는 Authorization 타입들에 대해 알아보겠다. Basic Auth Basic Auth는 username과 password를 Request Header에 담아서 보낸다. 실제로 Headers 탭에 들어가 Hidden 항목을 살펴보면 Authorization 항목에 Basic dXNl..
포스트맨(Postman)이란? 포스트맨은 API를 디자인, 빌드, 테스트하기 위한 API 플랫폼이다. 포스트맨을 이용하면 API 라이프사이클의 각 단계를 간소화하고 협업을 쉽게 만들어 더 좋은 API를 더 빠르게 생성할 수 있다. 많은 개발자들이 API 테스트를 위해 사용하는 플랫폼으로, 사용법이 간단하고 직관적이다. 이번 포스팅에서는 포스트맨의 기초적인 사용법에 대해서만 다루고, Authentication이나 테스트 자동화 등 고급 활용법은 추후에 다루도록 하겠다. 포스트맨 설치 https://www.postman.com/downloads/ Download Postman | Get Started for Free Try Postman for free! Join 30 million developers wh..
@RequestParam 어노테이션 @RequestParam 어노테이션은 주로 HTTP 요청의 파라미터를 읽어 메서드의 매개변수에 바인딩할 때 사용한다. 예를 들어 https://www.code-lab1/v1/board?page=1&pageSize=10 위와 같이 API 호출을 한다고 하자. @GetMapping("/v1/board") public ResponseDto getBoardList( @RequestParam(value="page") Integer page, @RequestParam(value="pageSize") Integer pageSize){ System.out.println(page + ", " + pageSize);// 1, 10 } @RequestParam 어노테이션은 value 속성..
멱등의 사전적 의미 네이버 국어사전에 의하면 멱등은 '연산을 여러 번 적용하더라도 결괏값이 달라지지 않는 일'을 뜻한다. HTTP 메소드의 멱등성(Idempotent) GET, POST, PUT, DELETE 등의 HTTP 메소드 중에는 멱등성을 갖는 메소드들이 존재한다. HTTP 메소드가 멱등성을 갖는다는 것은 동일한 HTTP 요청을 몇 번을 보내든 같은 결과를 만든다는 것이다. 하지만 이렇게 HTTP 메소드의 멱등성을 이해하면 헷갈릴 수 있다. 중요한 것은 반환받는 결과가 같다는 뜻이 아니라 서버의 결과(상태)가 같다는 것이다. 즉, HTTP 메소드의 멱등성은 HTTP 요청을 몇 번을 보내더라도 일정한 서버의 상태를 만듦을 의미한다고 생각하자. HTTP 메소드들의 멱등성 여부는 아래와 같다. HTTP..
HTTP 1.0과 HTTP 1.1의 차이 HTTP 1.0과 HTTP 1.1의 가장 큰 차이점은 역시 Keep-alive 기능이다. HTTP 1.0은 매 요청마다 TCP 세션을 맺어야 했지만 1.1은 한 번의 TCP 세션으로 여러 개의 요청을 날릴 수 있다. 좀 더 자세한 내용은 다음을 참고하자. [Web] HTTP 1.0 과 HTTP 1.1의 차이 HTTP란? HTTP(Hyper Text Transfer Protocol)는 인터넷에서 주로 사용하는 데이터를 송수신하기 위한 프로토콜이다. HTTP에 대한 자세한 내용은 다음을 참고하자. [네트워크] HTTP란? non-persistent HTTP vs persistent code-lab1.tistory.com HTTP 1.1의 문제점 HTTP 1.1에서는 ..
웹소켓(WebSocket) 프로토콜이란? 웹소켓(WebSocket)은 클라이언트와 서버(브라우저와 서버)를 연결하고 실시간으로 통신이 가능하도록 하는 첨단 통신 프로토콜이다. 웹소켓은 하나의 TCP 접속에 전이중(duplex) 통신 채널을 제공한다. 쉽게 말해, 웹소켓은 Socket Connection을 유지한 채로 실시간으로 양방향 통신 혹은 데이터 전송이 가능한 프로토콜이다. 오늘날 채팅 어플리케이션, SNS, 구글 Docs, LOL 같은 멀티플레이 게임, 화상회의 등 많은 분야에서 사용되고 있다. HTTP와의 차이는? 기존 HTTP는 단방향 통신이였다. 클라이언트에서 서버로 Request를 보내면 서버는 클라이언트로 Response를 보내는 방식으로 동작했다. 또한, HTTP는 기본적으로 무상태(S..
쿠키(Cookie)란? 쿠키는 클라이언트(로컬)에 저장되는 키와 값이 들어있는 작은 데이터 파일이다. 이러한 쿠키는 클라이언트에 저장되어 필요시 정보를 참조하거나 재사용할 수 있다. 보통 웹 환경에서는 클라이언트와 서버가 HTTP 프로토콜을 이용해 통신한다. 하지만 HTTP 프로토콜은 아래와 같은 특징을 가지기 때문에 쿠키를 사용한다. 1. Connectionless(비연결성) -> HTTP는 TCP 연결을 맺고 요청(Request)을 보내면 서버는 응답(Response)을 보내고 연결이 끊어진다. 물론 HTTP 1.1 버전은 커넥션을 계속 유지하는 keep-alive 옵션이 디폴트이긴 하다. 하지만 HTTP 1.0 버전은 기본적으로 connectionless이다. 참고) [Web] HTTP 1.0 과 ..
@Entity @Entity 어노테이션이 붙은 클래스는 JPA가 관리하는 엔티티이다 JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 어노테이션이 필수다 기본 생성자 필수(파라미터가 없는 public 또는 protected 생성자) final 클래스, enum, interface, inner 클래스 사용 X 저장할 필드에 final 사용 X name 속성을 사용하면 JPA에서 사용할 엔티티 이름을 지정할 수 있다. 기본값은 클래스 이름을 그대로 사용한다 예시: @Entity public class Member { @Id @GeneratedValue @Column(name = "MEMBER_ID") private Long id; private String name; Member(){}// 생략하면 ..
영속성 컨텍스트란? 영속성 컨텍스트는 엔티티를 영구 저장하는 환경이라는 뜻이다. 영속성 컨텍스트는 애플리케이션과 DB 사이에서 객체를 보관하는 가상의 DB 역할을 한다. 엔티티 매니저(EntityManager)를 통해 엔티티를 저장하거나 조회하면 엔티티 매니저는 영속성 컨텍스트에 엔티티를 보관하고 관리하게 된다. 엔티티 생명주기 비영속(new/transient) 상태 : 영속성 컨텍스트와 관계가 없는 상태 //객체를 생성한 상태(비영속) Member member = new Member(); member.setId("member1"); member.setUsername("회원1"); 영속(managed) 상태 : 영속성 컨텍스트에 저장된 상태 //객체를 생성한 상태(비영속) Member member = n..