Spring Boot/웹 개발 이론

URI, URL, HTTP 프로토콜

운동하는 주니어개발자 2023. 4. 20. 02:47

오늘은 Web 개발 개론에 대해 마무리 공부를 하였다.

처음으로 설명할 내용은 URI 설계이다.

1. URI

- 인터넷에서 특정 자원을 나타내는 주소 값 해당 값은 유일하다. (응답은 달라질 수 있다.)

- 요청 : https://www.fastcampus.co.kr/resource/sample/1

- 응답 : fastcampus.pdf, fastcampus.docx

2. URL

- 인터넷 상에서의 자원 특정 파일이 어디에 위치하는지 식별 하는 주소

- 요청 : https://www.fastcampus.co.kr/fastcampus.pdf

- URL은 URI의 하위 개념이다.

다음으로는 URI 설계 원칙(RFC-3986)에 대해 설명하겠다.

URI 설계 원칙(RFC-3986)에는 총 18개가 있다.

1. 슬래시 구분자 ( / )는 계층 관게를 나타내는 데 사용한다.

ex) https://fastcampus.co.kr/classes/java/curriculums/web-master

2. URI 마지막 문자로 ( / )는 포함하지 않는다.

ex) https://fastcampus.co.kr/classes/java/curriculums/web-master/

3. 하이픈 (-)은 URI 가독성을 높이는데 사용한다.

ex) https://fastcampus.co.kr/classes/java/curriculums/web-master

4. 밑줄 (_)은 사용하지 않는다.

ex) https://fastcampus.co.kr/classes/java/curriculums/web_master

5. URI 경로에는 소문자가 적합하다.

ex) https://fastcampus.co.kr/classes/JAVA/curriculums/web-master (X)

ex) https://fastcampus.co.kr/classes/java/curriculums/web-master (O)

6. 파일 확장자는 URI에 포함하지 않는다.

ex) https://fastcampus.co.kr/classes/java/curriculums/web-master.jsp

7. 프로그래밍 언어에 의존적인 확장자를 사용하지 않는다.

ex) https://fastcampus.co.kr/classes/java/curriculums/web-master.do

8. 구현에 의존적인 경로를 사용하지 않는다.

ex) https://fastcampus.co.kr/servlet/classes/java/curriculums/web-master

9. 세션 ID를 포함하지 않는다.

ex) https://fastcampus.co.kr/classes/java/curriculums/web-master?session-id=abcdef

10. 프로그래밍 언어의 Method명을 이용하지 않는다.

ex) https://fastcampus.co.kr/classes/java/curriculums/web-master?action=intro

11. 명사에 단수형 보다는 복수형을 사용해야 한다. 컬렉션에 대한 표현은 복수로 사용한다.

ex) https://fastcampus.co.kr/classes/java/curriculums/web-master

12. 컨트롤러 이름으로는 동사나 동사구를 사용한다.

ex) https://fastcampus.co.kr/classes/java/curriculums/web-master/re-order

13. 경로 부분 중 변하는 부분은 유일한 값으로 대체 한다.

ex) 생략 … /curriculums/web-master/lessons/{lesson-id}/users/{user-id}

ex) 생략 … /curriculums/web-master/lessons/2/users/100

14. CRUD 기능을 나타내는 것은 URI에 사용하지 않는다.

ex) GET : 생략 … /curriculums/web-master/lessons/2/users/100/READ (X)

ex) DELETE : 생략 … /curriculums/web-master/lessons/2/users/100 (O)

15. URI Query Parameter 디자인, URI 쿼리 부분으로 컬렉션 결과에 대해서 필터링 할 수 있다.

ex) 생략 … /curriculums/web-master?chapter=2

16. URI 쿼리는 컬렉션의 결과를 페이지로 구분하여 나타내는데 사용한다.

ex) 생략 … /curriculums/web-master?chapter=2&page=0&size=10&sort=asc

17. API에 있어서 서브 도메인은 일관성 있게 사용해야 한다.

ex) https://fastcampus.co.kr

ex) https://api.fastcampus.co.kr

ex) https://api-fastcampus.co.kr

18. 클라이언트 개발자 포탈 서브 도메인은 일관성 있게 만든다.

ex) https://dev-fastcampus.co.kr

ex) https://developer-fastcampus.co.kr

이상으로 18가지에 대해 알아보았다. 다음으로는 HTTP Protocol에 대해 설명하겠다.

HTTP Protocol

- HTTP로 RFC 2616에서 규정된 Web에서 데이터를 주고 받는 프로토콜

- 이름에는 하이퍼텍스트 전송용 프로토콜로 정의되어 있지만 실제로는 HTML, XML, JSON, Image, Voice,

- Video, Javascript, PDF 등 다양한 컴퓨터에서 다룰 수 있는 것은 모두 전송할 수 있다.

- HTTP는 TCP를 기반으로 한 REST의 특징을 모두 구현하고 있는 Web기반의 프로토콜

HTTP는 메시지를 주고 받는 형태의 통신 방법

HTTP의 요청을 특정하는 Method는 8가지가 있다.

REST를 구현하기 위한 인터페이스이므로 알아둬야 함!

HTTP Status Code

응답의 상태를 나타내는 코드

자주 사용되는 코드

이상으로 오늘 공부는 마무리 하겠다. 오늘 공부로 웹 개발 개론에 대해 마무리하였다. 다음시간에는 본격적으로 Spring에 대해 공부해보겠다. 원래 이번 시간에 Spring을 들어갔어야 하지만 공부를 하다보니 다음시간에 해야할거 같다 그럼 다음시간에 돌아오겠다. 배윙 ~~

'Spring Boot > 웹 개발 이론' 카테고리의 다른 글

웹 개발, REST API  (0) 2023.04.20