0. RESTful API
- 머리로는 알고있고, 사용도해보았던 Swagger에 대해 더 자세히 알아보자
1. REST
ㄱ. REST란
- REST(Representational State Transfer)는 네트워크 기반 소프트웨어 아키텍처 스타일
- HTTP 프로토콜을 통해 API를 설계하기위한 스타일
- 자원 : REST에서는 모든 것을 리소스로 간주함
- 행위 : 자윈에 대한 행위로 자원을 표현하기 위한 행위
- HTTP 요청메소드(GET, POST, PUT, PATCH, DELETE)가 있음
- 표현 : 자원에 대한 구체적인 내용이고 표현방법으로는 페이로드가 있음
- {status : 200, data:{name:"chacha"}}
- URI는 리소스를 식별하는데 사용됨
- 예를 들어, /users/123는 ID가 123인 사용자를 나타내는 URI
- GET /users/123는 ID가 123인 사용자의 정보를 조회
- POST /users는 새로운 사용자를 생성
- PUT /users/123는 ID가 123인 사용자의 정보를 업데이트
- DELETE /users/123는 ID가 123인 사용자를 삭제
2. API
ㄱ.API란
- API는 정의 및 프로토콜 집합을 사용하여 두 소프트웨어 구성 요소가 서로 통신할 수 있게 하는 메커니즘

3. REST API, REST ful API
ㄱ. REST API란
- REST 스타일을 준수해서 만든 API자
- REST API와 REST Ful API를 구분지어 사용하지는 않음
ㄴ. REST Ful API란
- REST의 설계규칙을 잘 지켜서 설계된 API
- 즉 REST ful API의 주소만 보고도 어떤 API인지 알수 있어야함
- 예를 들면, GET/users , POST/users 등
ㄷ. 설계원칙
- URI는 리소스를 표현
- 자원에 대한 행위는 HTTP 요청 메소드로 표현해야함

ㄹ. 네이밍 컨벤션
- 동사가 아닌 명사를 사용할것
- 단, 컨트롤 자원을 의미하는건 예외로 동사처리가 가능
- 행위는 URL에 포함시키지 않아야함
- 예를 들면 POST/users/post{id}
- 소문자를 사용하고, 언더바(_)대신, 대시(-)를 사용해야하며, 파일의 확장자(png)와 슬래쉬(/)도 사용하지않아야함
4. 클라이언트 요청
- 예시코드 :
- headers : 요청의 성격이나 클라이언트에 대한 정보, 요청을 처리하는 방식등
- Body : 보통 json이나 xml형태로 주고받음
fetch("url/exchanges/{id}",{
method:"POST",
headers:{
ConTent-Type:"application/json",
},
body:{
name :"테스트",
userName:"chacha",
}})
5. 서버 응답
- Status Code : 모든 HTTP의 응답은 아래 상태코드를 포함함
- 2xx : 성공적인 요청
- 3xx : 리디렉션을 나타냄
- 4xx : 클라이언트측 오류일때(아이디, 패스워드, 인증 오류등)
- 5xx : 서버측 오류일때(서버가 닫혀있을때 등)