일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- process.env
- netlify
- AOP
- CSS
- package
- azure
- DP
- 상속
- MariaDB
- GOF
- 클라우드
- 객체지향
- dfs
- github
- 캡슐화
- npm
- mock
- 디자인 패턴
- Secret
- 추상화
- 메모이제이션
- 서브셋폰트
- Java
- 다형성
- Solid
- 동적계획법
- dotenv
- git
- bfs
- PostgreSQL
- Today
- Total
이것저것 해보기🌼
웹 개발 개론 본문
Web 이란
World Wide Web, WWW, W3
: 인터넷에 연결된 컴퓨터를 통해 사람들이 정보를 공유할수 있는 전세계적인 정보공간
1) Web site
2) API (*Web service)
Kakao open API, Google Open API
3) User Interface
Chrome
WEB의 기본 3가지 요소
1) URI
:리소스 식별자. 특정 사이트, 특정 쇼핑목록
2) HTTP
: 어플리케이션 컨트롤
ex) GET, POST..
3) HTMP
: XML을 바탕으로한 범용 문서 포맷
이를 이용하여 Chrome, Safari 에서 사용자가 알아보기 쉬운 형태로 표현
REST (Representational State Transfer)
1. Client, Server : 클라이언트와 서버가 서로 독립적으로 분리되어있어야 한다.
2. Stateless : 요청에 대해서 클라이언트의 상태를 서버에 저장하지 않는다.
3. Cache : 클라이언트는 서버의 응답을 Cache 할수 있어야한다.
클라이엉ㄴ트가 캐시를 통해서 응답을 재사용할 수 있어야 하며, 이를통해서 서버의 부하를 낮춘다.
4. 계층화 : 서버와 클라이언트 사이에 방화벽, 게이트웨이, Proxy 등 다양한 계층 형태로 구성이 가능해야하며, 이를 확장할 수 있어야한다.
5. 인터페이스 일관성 : 인터페이스의 일관성을 지키고, 아키텍처를 단순화시켜 작은 단위로 분리하여, 클라이언트, 서버가 독립적으로 개선될수 있어야한다.
6. Code on Demand(Optional) : 자바 애플릿, 자바 스크립트, 플래시 등 특정한 기능을 서버로부터 클라이언트가 전달받아 코드를 실행할 수 있어야한다.
REST ful , REST API 조건
1) 자원의 식별
리소스 접근할때 URI를 사용
ex) https://foo.co.kr/user/100
Resource : User
식별자 : 100
2) 메시지를 통한 리소스 조작
다양한 방식으로 데이터 전달 가능 ex) HTML, XML, JSON, TEXT 등
HTTP Header 부분에 content-type을 통해 데이터의 타입을 지정해줄 수 있음
데이터 전체를 전달하지 않고, 이를 메시지로 전달
3) 자기 서술적 메시지
요청하는 데이터가 어떻게 처리되어져야하는지 충분한 데이터를 포함
http 기반의 REST에서는 http method와 header 정보, 그리고 URI의 포함되는 정보로 표현
4) 애플리케이션 상태에 대한 엔진으로써 하이퍼미디어
REST API를 개발할 때 단순히 Client 요청에 대한 데이터만 응답해주는 것이 아닌 관련된 리소스에 대한 Link 정보까지 포함
=> 현업에서는 잘 사용X
URI 설계 패턴
URI란?
인터넷에서 특정 자원을 나타내는 주소값. Unique 값.
요청 : https://~~~~/resource/sample/1
응답 : soehee.pdf
1. URI 설계 원칙
- 슬래시 구분자( / )는 계층관계를 나타낸다.
- URI 마지막 문자로 슬래시는 포함하지 않는다.
- 하이픈( - )은 URI가독성을 높이는데 사용한다.
- 밑줄( _ )은 사용하지 않는다.
- URI 경로에는 소문자가 적합하다.
- 파일 확장자는 URI에 포함하지 않는다. ex) http:// ~.jsp
- 프로그래밍 언어에 의존적인 확장자를 사용하지 않는다.
- 구현에 의존적인 경로를 사용하지 않는다. ex) https://~/sevlet/~
- 세션 ID를 포함하지 않는다.
- 프로그래밍 언어의 Method명을 이용하지 않는다. ex) action=intro
- 명수에 단수형보다는 복수형을 사용해야한다. 컬랙션에 대한 표현은 복수로 사용
- 컨트롤러 이름으로는 동사나 동사구를 사용한다.
- 경로 부분 중 변하는 부분은 유일한 값으로 대체한다. ex) {user-id} => 100 으로 대체
- CRUD 기능을 나타내는 것은 URI에 사용하지 않는다. ex) READ
- URI Query Parameter 디자인 ex) web-study?chapter=2
- URI 쿼리는 컬렉션의 결과를 페이지로 구분하여 나타내는데 사용한다. ex) web-study?chapter=2&sort=asc
- API에 있어서 서브 도메인은 일관성 있게 사용해야한다. ex) https://api.seohee.com
- 클라이언트 개발자 포탈 서브 도메인은 일관성있게 만든다. ex) https://dev-seohee.com
HTTP Protocal
HTTP (Hyper Text Transfer Protocol)
웹에서 데이터를 주고받는 프로토콜. HTMP, JSON, Image 등 다양한 데이터 모두 전송 가능.
TCP 기반으로 REST의 특징을 모두 구현하고 있는 Web 기반의 프로토콜
8가지 Method
OPTIONS
- 요청한 URL에 어떠한 메소드 요청이 가능한지 묻는다.
GET
- URL에 해당하는 정보의 전송 요청을 보낸다.
HEAD
- URL에 해당하는 정보의 전송을 요청하지만, GET과는 다르게 정보의 Meta 정보만을 요청한다.
POST
- 서버가 처리할 수 있는 자료를 보낸다. GET으로 보낼 수 없는 자료들에 대해 전송할 때 사용한다.
PUT
- 자료를 전송하여 해당 URL에 자료를 저장한다.
DELETE
- 해당 URL의 자원, 정보를 삭제한다.
TRACE
- 이전까지 요청한 정보들의 목록을 요청한다.
CONNECT
- 프록시가 사용하고, 연결을 요청한다.
HTTP Status Code
자주 사용되는 코드
참고용 좋은글
'BE > Spring Boot' 카테고리의 다른 글
[REST API] PUT 다루기 (0) | 2021.06.30 |
---|---|
[REST API] POST 다루기 (0) | 2021.06.30 |
[REST API] GET 다루기 (0) | 2021.06.30 |
TO-DO LIST 만들기 프로젝트 2 (실행 및 테스트) (0) | 2021.06.29 |
TO-DO LIST 만들기 프로젝트 1 (구현) (0) | 2021.06.28 |