일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- @Transaction propagation
- 트랜잭션 격리
- nuxtjs/composition-api buildModules
- frontend
- Javascript
- docker desktop 유료화 정책
- 의존성주입
- ECMAScript
- docker desktop 대체
- TypeScript
- vue store
- Spock Mock Stub Spy
- DI
- HTTP란
- 타입스크립트
- 자바스크립트
- Docker Desktop 쓰고싶다
- TCP/IP
- @Transaction isolation
- webpack
- Vue+Typescript
- Spock Mock
- 공짜로 Docker Desktop같은거 쓰기
- Spock Stub
- Spock Spy
- Rancher Desktop설치
- enum
- mock stub
- mock stub spy
- Mock vs Stub
- Today
- Total
끄적끄적
[네트워크] Rest API란? 본문
Rest API는 현업을 하고 계시는 개발자라면 누구나 한번쯤은 들어봤을 것이라 생각합니다.
Rest(Representational State Transfer)규칙에 따라 개발된 API를 Rest API라고 합니다.
풀어서 이야기하면 요청시 URL를 통해 자원을 명시하고 용도에 맞는 HTTP Method를 통해 CRUD를 제공해 주는 것입니다.
Rest 구성요소
- 자원(Resource) : HTTP URI
- 자원에 대한 행위(Verb) : HTTP Method
- 자원에 대한 행위의 내용 (Representations) : HTTP Message PayLoad
Rest API 기본 규칙
- HTTP Method(GET,POST,PUT,DELETE)를 통해 자원 대한 행위를 표현한다.
- URI에 자원에 대한 표기를 할 때에는 대문자보다 소문자를 사용한다.
- URI에 행위에 대한 표현을 하지 않는다.(GET /resources/insert -> POST /resources)
- Path에 등록되는 가변적 Path값은 유니크(:id) 값으로 한다.(GET /resources/1, PUT /resources/1)
- URI마지막에 구분자(/)를 생략하며 계층 관계를 나타내는데 사용한다.
- URI에 언더바(_)를 사용하지 않고 사용해야하는 경우 하이픈(-)을 사용하도록 한다.
Rest API 기본 설계 예시
목록 GET /resources
단일 컨텐츠 GET /resources/:id
생성 POST /resources
수정 PUT /resources/:id
삭제 DELETE /resources/:id
부분수정 PATCH /resources/:id
응답코드
1xx : 전송 프로토콜 수준의 정보 교환
2xx : 클라어인트 요청이 성공적으로 수행됨
3xx : 클라이언트는 요청을 완료하기 위해 추가적인 행동을 취해야 함
4xx : 클라이언트의 잘못된 요청
5xx : 서버쪽 오류로 인한 상태코드
결론
Rest API를 설계하는 방법은 기본적으로 위에 언급한 내용대로 많이 사용하는 것으로 알고 있지만 회사마다 또는 협업하는 팀마다 추가적으로 규칙이 있을 수 있을 것인데 이러한 규칙을 잡고 API개발을 하거나 Route를 설계를 할 경우 조금 더 명확한 요청을 알 수 있고, 식별하기 쉬우며 복잡한 개발을 진행할 때 새로운 사람이 투입되어도 이해하는데에 어려움이 없습니다.
하지만 여러사람의 손을 거치거나 레거시의 경우 규칙없는 설계 때문에 예를들어 POST로만 처리되는 API라던지 Path에 유니크값이 아닌 검색값을 사용하는 경우라던지 이러면 소스를 보거나 요청을 실제로 해보지 않는 이상 구분이 어려울 것입니다.
더 자세한 내용을 원하시면 아래의 참고 사이트들을 보시면 이해에 조금 더 도움이 될 것 같습니다.
참고
https://www.slipp.net/wiki/pages/viewpage.action?pageId=12878219
https://www.a-mean-blog.com/ko/blog/%ED%86%A0%EB%A7%89%EA%B8%80/_/REST%EC%99%80-RESTful-API
' Computer Science > Network' 카테고리의 다른 글
[네트워크] keep-alive에 대해서 알아보자 (0) | 2020.06.14 |
---|---|
[네트워크] TCP/IP 3way HandShake & 4way HandShake (0) | 2019.07.11 |
[네트워크] HTTP - 히스토리 및 버전 알아보기 (0) | 2019.06.23 |
[네트워크] HTTP - 기초 및 개념 이해 (0) | 2019.06.22 |