Web 50

OAuth 2.0 기본 개념

#1 수업소개 Mine - opentutorials.org User Their - Google, Facebook, Twitter User가 Mine의 서비스를 이용하면 Their에 접근할 수 있도록 허가를 받는다. Mine이 ID, Password를 User로부터 전송받아 Their의 서비스를 이용할 때 사용한다. → 상당히 위험 (보안사고 발생 가능!) - OAuth 사용 - User의 요청에 의해 ID, Password 대신 accessToken을 발급 *accessToken: 모든 기능을 허용 x. 나의 서비스가 꼭 필요한 필수적인 기능만 부분적으로 허용 #2 역할 - mine: 우리가 만든 서비스 → Client - User: 사용자 → Resource..

Web/Front-End 2023.08.07

모든 개발자를 위한 HTTP 웹 기본 지식 #6

#6 HTTP 상태코드 6.1 HTTP 상태코드 소개 : 클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능 - 1xx (Informational): 요청이 수신되어 처리중 (거의 사용 x) - 2xx (Successful): 요청 정상 처리 - 3xx (Redirection): 요청을 완료하려면 추가 행동이 필요 - 4xx (Client Error): 클라이언트 오류, 잘못된 문법등으로 서버가 요청을 수행할 수 없음 - 5xx (Server Error): 서버 오류, 서버가 정상 요청을 처리하지 못함 클라이언트가 인식할 수 없는 상태코드를 서버가 반환하면? - 클라이언트는 상위 상태코드로 해석해서 처리 - 미래에 새로운 상태 코드가 ..

Web/HTTP 2023.07.05

모든 개발자를 위한 HTTP 웹 기본 지식 #5

#5 HTTP 메서드 활용 5.1 클라이언트에서 서버로 데이터 전송 > 쿼리 파라미터를 통한 데이터 전송 - GET - 주로 정렬 필터 (검색어, 게시판 리스트에 정렬 조건을 넣을 때) > 메시지 바디를 통한 데이터 전송 - POST, PUT, PATCH - 회원 가입, 상품 주문, 리소스 등록, 리소스 변경 > 정적 데이터 조회 - 쿼리 파라미터 미사용 - 이미지, 정적 텍스트 문서 - 조회는 GET 사용 - 정적 데이터는 일반적으로 쿼리 파라미터 없이 리소스 경로로 단순하게 조회 가능 > 동적 데이터 조회 - 쿼리 파라미터 사용 - 주로 검색, 게시판 목록에서 정렬 필터(검색어) - 조회 조건을 줄여주는 필터, 조회 결과를 정렬하는 정렬 조건에 주로..

Web/HTTP 2023.07.05

모든 개발자를 위한 HTTP 웹 기본 지식 #4

#4 HTTP 메서드 4.1 HTTP API를 만들어보자 - 회원 목록 조회 - 회원 조회 - 회원 등록 - 회원 수정 - 회원 삭제 > URI(Uniform Resource Identifier) - 회원 목록 조회 /read-member-list - 회원 조회 /read-member-by-id - 회원 등록 /create-member - 회원 수정 /update-member - 회원 삭제 /delete-member 이것은 좋은 URI 설계일까? *가장 중요한 것은 리소스 식별 - 리소스의 의미는 뭘까? 회원을 등록하고 수정하고 조회하는게 리소스가 아니다! 예) 미네랄을 캐라 ➝ 미네랄이 리소스 회원이라는 개..

Web/HTTP 2023.07.01

모든 개발자를 위한 HTTP 웹 기본 지식 #3

#3 HTTP 기본 3.1 모든 것이 HTTP : HyperText Transfer Protocol : 메시지에 모든 것을 전송 - HTML, TEXT - IMAGE, 음성, 영상, 파일 - JSON, XML (API) - 거의 모든 형태의 데이터 전송 가능 - 서버간에 데이터를 주고 받을 때도 대부분 HTTP 사용 - 지금은 HTTP 시대! - HTTP/0.9 1991년: GET 메서드만 지원, HTTP 헤더X - HTTP/1.0 1996년: 메서드, 헤더 추가 - HTTP/1.1 1997년: 가장 많이 사용, 우리에게 가장 중요한 버전 - RFC2068 (1997) → RFC2616 (1999) → RFC7230~7235 (2014) - HTTP/2 2015년: ..

Web/HTTP 2023.07.01

모든 개발자를 위한 HTTP 웹 기본 지식 #2

#2 URI와 웹 브라우저 요청 흐름 2.1 URI "URI는 로케이터(locator), 이름(name) 또는 둘 다 추가로 분류될 수 있다" URI ⊃ URL, URN > URI 단어 뜻 - Uniform: 리소스 식별하는 통일된 방식 (구분할 수 있는 모든 것) - Resource: 자원, URI로 식별할 수 있는 모든 것 (제한 없음) - Identifier: 다른 항목과 구분하는데 필요한 정보 > URL: Uniform Resource Locator > URN: Uniform Resource Name > URL, URN 단어 뜻 - URL (Locator): 리소스가 있는 위치를 지정 - URN (Name):..

Web/HTTP 2023.06.28

모든 개발자를 위한 HTTP 웹 기본 지식 #1

#1 인터넷 네트워크 1.1 인터넷 통신 클라이언트 → 서버 "Hello World!" 전송 클라이언트 ← 서버 "Ok" 전송 - 인터넷이 있으면 복잡! 1.2 IP(Internet Protocol) 1. IP 주소 부여 - IP 인터넷 프로토콜 역할 : 지정한 IP 주소(IP Address)에 데이터 전달 : 패킷(Packet)이라는 통신 단위로 데이터 전달 2. 클라이언트 패킷 전달 3. 서버 패킷 전달 - 비연결성 : 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송 - 비신뢰성 : 중간에 패킷이 사라지면? (패킷 소실) : 패킷이 순서대로 안오면? (패킷 전달 순서 문제 발생) - 프로그램 구분 : 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상..

Web/HTTP 2023.06.28

김영한 Spring 핵심 원리 - 기본편 #7

#7 의존관계 자동 주입 7.1 다양한 의존관계 주입 방법 - 생성자 주입 - 수정자 주입(setter 주입) - 필드 주입 - 일반 메서드 주입 src/main/java/hello.core/order/OrderServiceImpl > 생성자 주입 - 이름 그대로 생성자를 통해서 의존 관계를 주입 받는 방법 - 지금까지 우리가 진행했던 방법 - 생성자 호출시점에 딱 1번만 호출되는 것이 보장 - "불변, 필수" 의존관계에 사용 @Component public class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository; private final DiscountPolicy discountPoli..

Web/Spring 2023.05.22

김영한 Spring 핵심 원리 - 기본편 #6

#6 컴포넌트 스캔 6.1 컴포넌트 스캔과 의존관계 자동 주입 시작하기 - 지금까지 스프링 빈을 등록한 방법: 자바 코드의 @Bean이나 XML을 통해서 설정 정보에 직접 등록할 스프링 빈을 나열 - 등록해야 할 스프링 빈이 수십, 수백개가 되면 일일이 등록하기도 귀찮고, 설정 정보도 커지고, 누락하는 문제가 발생 > 스프링이 제공하는 기능 - 컴포넌트 스캔: 설정 정보가 없어도 자동으로 스프링 빈을 등록 - @Autowired: 의존관계 자동 주입 > 컴포넌트 스캔과 의존관계 자동 주입 src/main/java/hello.core AutoAppConfig 자바클래스 생성 후 아래 코드 작성 package hello.core; import org.spr..

Web/Spring 2023.05.22

김영한 Spring 핵심 원리 - 기본편 #5

#5 싱글톤 컨테이너 5.1 웹 어플리케이션과 싱글톤 - 스프링은 기업용 온라인 서비스 기술을 지원하기 위해 탄생 - 대부분의 스프링 애플리케이션은 웹 애플리케이션이다. (웹이 아니어도 개발 가능) - 웹 애플리케이션은 보통 여러 고객이 동시에 요청을 한다.*고객이 3번 요청 → 객체 3개 생성 > 스프링 없는 순수한 DI 컨테이너 테스트 src/test/java/hello.coresingleton 패키지 생성 → SingletonTest 자바 클래스 생성 후 아래 코드 작성package hello.core.singleton; import hello.core.AppConfig; import hello.core.member.MemberService; import org.jun..

Web/Spring 2023.05.15