#코멘토 #코멘토실무PT #실무PT후기 #실무강의 #리액트강의 #웹프로그래밍 #react #웹개발실무
필수 링크
https://bit.ly/3D9XCOz
내 경험담으로 프로젝트를 위해 팀을 구성을 하게 되는데 그때 최소 4명으로 구성하게된다. 프론트엔드 1명, 백엔드 1명, 디자이너 1명, PM 1명 + ⍺ 이렇게 구성된 팀으로 프로젝트를 진행하게 되며 그 사이 백엔드 개발자와 프론트 엔드 개발자간에 의사소통이 필요할 때가 있다 바로 실데이터를 어떻게 받아 올지 혹은 실 데이터를 어떻게 저장을 하면 좀 더 효율적으로 저장이 될지? 등이 있다 이때 당시 의사소통을 하며 정리한 내용을 명세서로 정리할 필요가 있는데 바로 API 문서이다!
Fackbook에서 말한 GraphQL 제작 이유
문제를 해결하기 위해, 정보를 사용하는 측(클라이언트)에서
GraphQL API 는 주로 하나의 Endpoint를 사용한다
GraphQL API 는 요청할 때 사용한 Query 문에 따라, 응답의 구조가 달라진다.
< 장점 >
- HTTP 요청의 횟수를 줄일 수 있다.
- RESTful은 각 Resoure 종류 별로 요청을 해야하고, 따라서 요청 횟수가 필요한 Resoure의 종류에 비례
- 반면 GraphQL은 원하는 정보를 하나의 Query에 모두 담아 요청하는 것이 가능하다
- HTTP 응답의 Size를 줄일 수 있다.
- RESTful은 응답의 형태가 정해져있고, 따라서 필요한 정보만 부분적으로 요청하는 것이 힘들다
- 반면 GraphQL은 원하는 대로 정보를 요청하는 것이 가능하다
<단점>
- File 전송 등 Text 만으로 하기 힘든 내용들을 처리하기 복잡하다
- 고정된 요청과 응답만 필요한 경우에는 Query로 인해 요청의 크가가 RESTful API의 경우보다 더 커진다
- 재귀적인 Query가 불가능하다.
REST(Representational State Transfer)
1. HTTP URI(Uniform Resource Identifier)를 통해 자원을 명시하고
2. HTTP Method(GET, POST, PUT, DELETE)를 통해
3. 해당 자원(URI)에 대한 CRUD Operation을 적용하는 것을 의미
- REST API란 REST의 원리를 따르는 API를 의미
- 올바르게 설계하기 위해서 지켜야 하는 규칙이 있다
resource 동사보다는 명사를, 대문자보다는 소문자를 사용하여야 한다, resource의 자원은 복수 명사를 사용해야 한다.
Bad Example : GET /Member/1
Good Example : GET /members/1
자원에 대한 행위는 HTTP Method(GET, POST, PUT, DELETE)로 표현한다
URI예 HTTP Method가 들어가면 안된다
Bad Example : GET /members/delete/1
Good Example : DELETE /members/1
행위에 대한 동사 표현(CRUD 기능)이 들어가면 안된다.
Bad Example : GET /members/show/1 , GET /members/insert/1
Good Example : GET /members/1 , POST /members/1
경로 부분 중 변하는 부분은 유일한 값으로 대체한다
student를 생성하는 route: POST/students
id=12인 student를 삭제하는 route: DELETE /students/12
슬래시 구분자(/)는 계층 관계를 나타내는데 사용한다, 마지막 문자로 슬래시 구분자를 포함하지 않는다
Bad Example : /houses/apartments/
Good Example : /houses/apartments
리소스 간에는 연관 관계가 있는 경우는
( /리소스명/리소스ID/관계가 있는 다른 리소스명 )
GET /users/{user-id}/devices
하이픈(-)은 URI 가독성을 높이는데 사용
Bad Example : GET /users/{user_id}/devices
Good Example : GET /users/{user-id}/devices
파일확장자는 URI에 포함하지 않는다.(필요한 경우 Accept header를 사용)
Bad Example : GET /members/soccer/345/photo.png
Good Example : GET /members/soccer/345/photo