※이 포스팅은 sopt 26기 server part seminar 자료 바탕으로 작성되었으며, 복습용입니다.
1-1. URI, URL
URI | URL |
통합 자원 식별자 자원을 나타내는 주소 | 통합 자원 지시자 |
고유하게 정보 리소스를 식별하고 위치를 지정 어떤 자원의 위치를 의미하고 HTTP는 주어진 URI로 객체 를 찾아오고 Method가 그 위치에 대한 행위를 뜻함 |
특정 서버의 한 리소스에 대한 구체적인 위치를 서술 네트워크 상 해당 자원이 어디 있는지 알려주는 규약 어떤 특정 지점의 위치 또는 파일 리소스에 접근하기 위한 주소 |
즉, URI 는 URL을 포함한 개념
- 네이밍이 직관적이야하고 명사가 이해하기 좋음
- URI 설계에 정답은 없지만 항상 일관된 규칙으로 작성해야 혼동되지 않는다..!
https://github.com/Jeong-Hyowon | URI, URL |
https://github.com/ | URI, URL |
https://search.naver.com/search.naver?sm=top_hty&fbm=1&ie=utf8&query=server | URI URL이 해당되지 않는 이유 (서버 리소스 내의 저장 위치와 상관없는 지정자) |
2-1. API
API란,
- 서버 애플리케이션의 기능을 사용하기 위한 방법/수단
- 구현 방식을 알지 못해도 서비스가 서로 통신 가능
- 리소스에 대한 액세스 권한을 제공하고 보안과 제어를 유지할 수 있게 해주며 액세스 권한을 어떻게, 누구에게 제공할지 여부만 결정하면 됨
- URI는 서버 설계 도면 / API는 서버 사용 설명서
- URI는 서버 구성 요소를 나타냄 (URI와 API 둘 다 명확하고 직관적이여야 타인이 볼 때 헷갈리지 않음)
2-2. REST
REST란,
리소스 지향 아키텍쳐로 모든 것을 리소스, 명사로 표현
- 모든 형태의 명령이 명사형으로 정의가 가능한 것은 아니지만, 최대한 리소스 기반의 명사 형태로 정의를 하는게 REST형태의 디자인이 됨
2-3. REST API
웹(HTTP) 설계의 우수성에 비해 제대로 사용되어지지 못하는 모습에 안타까워하며 웹의 장점을 최대한 활용할 수 있는 아키텍처로써 REST를 발표
즉, 자원(URI는 정보의 자원을 표현) + 행위(자원에 대한 행위는 HTTP Method (GET, POST, PUT, DELETE 등) 으로 표현)
- 슬래시 구분자(/)는 계층 관계를 나타내는 데 사용
- URI 마지막 문자로 슬래시(/)를 포함하지 않음
- 하이픈(-)은 URI 가독성을 높이는데 사용
- 밑줄(_)은 URI에 사용하지 않음
- URI 경로에는 소문자가 적합
- 파일 확장자는 URI에 포함시키지 않음
- 자원을 표현하는 Collection과 Document
(Document는 단순히 문서 - 한 객체 / Collection은 문서들의 집합, 객체들의 집합)
Uniform Interface | URI로 지정한 리소스에 대한 조작을 통일되고 한정적인 인터페이스로 수행하는 아키텍처 스타일 |
Stateless | HTTP Session과 같은 컨텍스트 저장소에 상태 정보를 저장하지 않음 API 서버는 들어오는 요청 만을 들어오는 메시지로만 처리하면 되며, 세션과 같은 정보를 신경 쓸 필요 없음 |
Layered System | REST 서버는 다중 계층으로 구성될 수 있으며 보안, 로드 밸런싱, 암호화 계층을 추가해 구조상의 유연성을 둘 수 있고 PROXY, 게이트웨이 같은 네트워크 기반의 중간 매체를 사용할 수 있음 |
Self-descriptiveness | REST API 메시지만 보고도 API를 쉽게 이해 할 수 있음 |
Client-Server | REST 서버는 API를 제공하고, 제공된 API를 이용해서 비즈니스 로직 처리 및 저장을 책임짐. 각각의 역할이 확실히 구분되기 때문에 클라이언트와 서버에서 개발해야 할 내용이 명확해지고 서로간 의존성이 줄어듦 |
Cacheable | HTTP라는 기존의 웹 표준을 그대로 사용하기 때문에 캐싱 기능 적용 가능 |
3-1. API 명세서
- API 문서는 누가 봐도 이해할 수 명확하고 직관적이여야 한다
- 클라이언트에게 API 명세서를 제공해야함 문서 작성방법에는 다양한 방법(swagger, postman api)가 있지만 스프레드시트나 Github WIKI 추천
API 이름 | HTTP Method | Content-Type | Request Header/Body | Response Body |
(합동 세미나와 앱잼을 하면서 API 명세서가 정말 중요한 존재였고, 수정할 때 마다 클라이언트한테도 꼭꼭!!!! 수정 사실을 알려줘야한다!!!!!!!!!!!!)
'개발이야기 > server' 카테고리의 다른 글
Multer, AWS S3, Architecture (0) | 2020.08.24 |
---|---|
DB, JWT, 프로젝트 구조 (0) | 2020.08.24 |
Database, RDS (0) | 2020.08.24 |
Express, Routing (0) | 2020.05.23 |
Javascript (0) | 2020.05.10 |
댓글