REST(Representational State Transfer)의 약자로 자원을 이름으로 구분하여 해당 자원의 상태를 주고받는 모든 것을 의미한다.즉 REST란 1\. HTTP URI(Uniform Resource Identifier)을 통해 자원(Resource)
오브젝트가 메모리상에 어떻게 존재하는지는 아키텍처와 언어에 따라 다르다. 또 메모리 상의 오브젝트는 인간이 읽기 힘들다.EX)애플리케이션 1과 애플리케이션 2를 인터넷을 통해 데이터를 주고받으려고 해보자. 이 두 애플리케이션은 서로 언어도 다르고 아키텍처도 다르다고 하
HTTP 서버 중에서도 리소스 파일을 반환하는 서버를 의미한다.클라이언트가 정적 서버에 요청을 하면 서버는 해당 HTML 파일에 아무 작업도 하지 않고, 파일을 있는 그대로 반환한다. EX) 정적 웹 서버에는 아파치나 Nginx가 있다. 설치한 후 지정된 경로에 원하는
과거 대부분의 웹사이트는 2계층 구조로 개발되어있다. 2계층 구조란, 화면이 보여지는 클라이언트(Client)와 데이터베이스(DB)가 물리적으로 분리되어 있는 것을 뜻하며 클라이언트에는 UI(User Interface)와 비지니스 로직이 함께있는 구조다.비교적 쉽고 빠
웹 서버 : HTTP 프로토콜을 기반으로, 클라이언트의 요청을 서비스하는 기능을 담당요청에 맞게 2가지 기능 중 선택해서 수행정적 컨테츠 제공 : WAS를 거치지 않고 바로 제공동적 컨텐츠 제공을 위한 요청 전달 : 클라이언트 요청을 WAS에 보내고, WAS에서 처리한
자바 웹 애플리케이션은 대부분 자바 서블릿을 기반으로 한다.서블릿 기반의 서버를 사용하기 위해 개발자는 Javax.servlet.http.HttpServlet을 상속받는 서브 클래스를 작성해야 한다. 그러면 서블릿 컨테이너가 서블릿 서브 클래스를 실행시킨다.일단 Htt
코드 아키텍처를 구상할 떄는 확장성, 재사용성, 유지 보수 가능성, 가독성과 같은 요소들을 염두해야한다. 그 중에서 백엔드 API 코드에 가장 널리 적용되는 패턴 중하나가 레이어드 아키텍처 패틴이다.스프링 프로젝트 내부에서 어떻게 코드를 적절히 분리하고 관리할 것이냐에
보통 자바로 된 비지니스 애플리케이션의 클래스는 두가지 종류로 나눌 수 있다. 일을 하는 클래스(기능을 수행하는 클래스) 컨트롤러, 서비스, 퍼시스턴스처럼 로직을 수행하는 클래스 데이터를 담는 클래스 아무 기능 없이 데이터베이스에서 반환된 비지니스 데이터를 담기
REST API를 구현하므로 @RestController 어노테이션을 이용해 이 컨트롤러가 RestController임을 명시한다. @RestController를 이용하면 http 관련된 코드 및 요청/응답 매핑을 스프링이 알아서 해준다.GetMapping 어노테이션을
서비스 레이어는 컨트롤러와 퍼시스턴스 사이에서 비지니스 로직을 수행하는 역할을 한다. HTTp와 긴밀히 연관된 컨트롤러에서 분리돼 있고, 도 데이터베이스와 긴밀히 연관된 퍼시스턴스와도 분리돼 있다. 따라서 서비스 레이어에서는 우리가 개발하고자 하는 로직에 집중할 수 있
TodoEntity 보통 데이터베이스 테이블마다 그에 상응하는 엔티티 클래스가 존재한다. Todo테이블 --> TodoEntity 상응 * @Entity* : 엔티티 클래스임을 명시 @Entity("TodoEntity")처럼 매개 변수를 넣어 줄 수도 있다.
Create Todo 구현 퍼시스턴스 구현 TodoRepository를 사용한다. JpaRepository를 상속하므로 JpaRepository가 제공하는 메서드를 사용할 수 있다. 엔티티 저장을 위해서 save 메서드를 사용하고, 새 Todo 리스트를 반환하기
클라이언트 or 프론트엔드 => 브라우저인터넷을 이용해 서버에 있는 자원(HTML, Javascript, CSS 등)을 사용자의 컴퓨터로 다운로드 후, 브라우저에서 실행시킨다.Node.js 전까지 자바스크립트는 브라우저 내에서만 실행 가능했다. 자바스크립트를 실행하기
브라우저(구글 크롬, 인터넷 익스플로러, 파이어폭스, 사파리, 오페라)의 주소창에 웹 주소를 입력하면 => 브라우저는 HTTP GET 요청을 웹 주소의 서버로 전송한다. => (보통 프론트엔드가 있는 웹 서비스의 경우) HTML 파일을 결과로 반환한다.브라우저란 : 웹
APP 컴포넌트export default App; => APP이라는 컴포넌트를 다른 컴포넌트에서 사용하도록 명시할 수 있다. 컴포넌트는 자바스크립트 함수 또는 자바스크립트 클래스 형태로 생성할 수 있다. 위의 예는 자바스크립트 함수로 컴포넌트를 구현!JSX React가
CORS(Cross-Origin Resource Sharing) > : 처음 리소스를 제공한 도메인이 현재 요청하려는 도메인과 다르더라도 요청을 허락해주는 웹 보안 방침이다. 이 프로젝트의 Todo 애플리케이션에서 프론트엔드 서버의 도메인은 http://localho
BASIC 인증 : 모든 http 요청에 아이디와 비밀번호를 같이 보내는 것이다. 최초 로그인 후 http 요청 헤더의 Authorization: 부분에 다음 처럼 아아디와 비밀번호를 콜론으로 이어 붙인 후 base64로 인코딩한 문자열을 함께 보낸다. 이 http
특이사항 password에 null을 입력할 수 있다.Outh를 이용해 SSO(Single Sign On)을 구현하지 않는다면 password 필드는 반드시 null이면 안된다. 하지만 SSO을 이용해 로그인하는 경우 password가 필요 없다.(따라서 데이터베이스에
스프링 시큐리티와 JWT를 쓰는 이유 > 예를 들어보자) 모든 API 요청에 토큰을 보네는 것으로 사용자를 확인한다. 그러면 각 API는 맨 처음 토큰을 확인함으로써 접근을 허용 또는 거부하는 코드를 실행할 것이다. 문제는 모든 API가 이 작업을 해야한다는 것이다.