해당 내용은 AWS에서 작성 된 글을 참고 했고 저의 생각을 정리했기 때문에 참고 부탁드리겠습니다.
API가 무엇일까?
다른 소프트웨어 시스템과 통신하기 위한 규칙을 정하게 되는데 이를 API로 표시하는 방법이라고 한다.
Interface라는 단어가 있기 때문에 중간에서 서로간의 소통을 하기 위한 표현방법(?)이지 않을까?
이러한 소통을 위해 정보를 주고 받는 이동수단(?)을 HTTP라는 프로토콜을 사용해서 값을 전달한다?라고 이해하고 있다.
웹 리소스라는 단어 찾으면서 특정 블로그 글을 보았는데
http://jm-baek.tistory.com/manage/newpost/?type=post&returnURL=%2Fmanage%2Fposts%2F
현재 블로그 글을 작성하고 있는 URL을 보면 위와 같이 [http 프로토콜]을 사용해서 jm-baek.tistory.com의 [IP 주소]로 이동하고 /manage/newpost/ [경로(path)]의 [parameter]로 type, returnURL등을 표시하고 있는 것을 볼 수 있다.
여기서 나는 path를 API와 비슷한 개념으로 생각하고 있다.(아닐 수도 있다.)
Rest API는 무엇일까?
Rest(Representational State Transfer)는 API 작동 방식에 대한 조건을 부과하는 소프트웨어 아키텍처라고 라고 한다.
여기서 소프트웨어 아키텍처는 또 뭐야라고 궁금증이 생길 수 있는데 나도 아직 모르겠다.
정리하면 API를 작성할 때 규약 or 규칙(?)을 정해서 아키텍처를 안정적으로 만들 수 있는 것이라고 생각한다.
조금 더 예를 들면 path 작성 방법에 동사의 단어를 사용하는 것을 지양하는 방법 등이 있을 것 같다.
/buy/item/{number} (나쁜 예시(?))
아래는 AWS에서 말하는 제약 조건이다.
균일한 인터페이스에는 4가지 아키텍처 제약 조건이 있습니다.
- 요청은 리소스를 식별해야 합니다. 이를 위해 균일한 리소스 식별자를 사용합니다.
- 클라이언트는 원하는 경우 리소스를 수정하거나 삭제하기에 충분한 정보를 리소스 표현에서 가지고 있습니다. 서버는 리소스를 자세히 설명하는 메타데이터를 전송하여 이 조건을 충족합니다.
- 클라이언트는 표현을 추가로 처리하는 방법에 대한 정보를 수신합니다. 이를 위해 서버는 클라이언트가 리소스를 적절하게 사용할 수 있는 방법에 대한 메타데이터가 포함된 명확한 메시지를 전송합니다.
- 클라이언트는 작업을 완료하는 데 필요한 다른 모든 관련 리소스에 대한 정보를 수신합니다. 이를 위해 서버는 클라이언트가 더 많은 리소스를 동적으로 검색할 수 있도록 표현에 하이퍼링크를 넣어 전송합니다
여러 블로그들에서 공통적으로 작성되어있는 조건은 아래와 같다.
1. 소문자로 작성하기
2. 언더바(_)가 아닌 하이픈(-)을 사용
3. 행위(delete, post) 등과 같이 작성 하지 않기
등등이 있는데 일단 몇 개만 적어보았다.
API Method(행위)
- GET
- 리소스를 불러오는 역할
- POST
- 리소스를 등록(업로드)? 하는 역할
- PATCH
- 부분 내용만 수정한다.
- PUT
- 전체 내용을 덮어(수정)버린다.
- DELETE
- 내용을 삭제한다.(가급적 사용 X)
메소드들로 URL을 작성해보자.
간단하게 프로젝트를 진행하면서 작성 중인 URL을 간단하게 적어보았다.
(틀렸을 수도 있다^^)
제품 등록
- post /product
생산품 전체 조회
- get /products
생산품 단일 조회
- get /product?searchId={id}
생산품 수정
- patch /product/{id}
생산품 삭제
- delete /product/{id}
'프레임워크 > Spring' 카테고리의 다른 글
[Spring Framework] 오류 페이지 처리 1탄 (0) | 2023.10.18 |
---|---|
어노테이션 for 스프링 (0) | 2023.04.15 |
controller, service, repository (0) | 2023.04.12 |
DDD 설계 vs SQL 설계 (0) | 2023.04.10 |
VO / DTO / Entity (0) | 2023.04.09 |