https://claremont.tistory.com/entry/%EC%9B%B9-%EC%A7%80%EC%8B%9D-API%EC%99%80-RESTful-API
[웹 지식] API와 RESTful API
개인적으로 API는 "메뉴판에 있는 음식 사진을 손으로 직접 가리키는" 약속된 엔드포인트라 생각한다 🤔 ㅁAPI(Application Programming Interface): 소프트웨어 간의 상호작용을 위한 규칙과 프로토콜을
claremont.tistory.com
CRUD는 데이터베이스와 웹 애플리케이션에서 데이터를 다루는 네 가지 기본 작업을 나타내는 약어이다.
Create, Read, Update, Delete
이 네 가지 기본적인 기능을 말하기 쉽게 CRUD라 줄여서 부르는 것이다. 보통 씨알유디라 읽고 크러드라 읽는 사람도 있다.
상황1) 게시글 기능
C: 게시글 생성
R: 게시글 조회
U: 게시글 수정
D: 게시글 삭제
상황2) 회원가입 기능
C: 회원 가입
R: 회원가입 정보 조회
U: 회원가입 정보 수정
D: 회원 탈퇴
1. Create (생성): 새로운 데이터를 추가하는 작업이다. 예를 들어, 사용자 정보를 DB에 추가하는 것이 해당된다. HTTP 메서드에서는 POST가 이 작업에 해당한다.
POST /users
요청 본문(body): 새로운 사용자의 정보를 포함하는 JSON / XML 데이터
응답: 새로운 사용자 ID와 함께 성공 메시지 또는 적절한 상태 코드 (e.g. 201 Created)
2. Read (읽기): 기존 데이터를 조회하는 작업이다. DB에서 정보를 검색하거나 표시하는 것이 포함된다. HTTP 메서드에서는 GET이 이 작업에 해당한다.
GET /users
응답: 모든 사용자의 목록을 포함하는 JSON / XML 데이터 또는 적절한 상태 코드와 함께 성공 메시지 (e.g. 200 OK)
3. Update (수정): 기존 데이터를 수정하는 작업이다. DB에 저장된 정보를 변경하는 것으로, 예를 들어 사용자 정보를 업데이트하는 것이 해당된다. HTTP 메서드에서는 PUT이나 PATCH가 이 작업에 해당한다.
PUT /users/{id}
or
PATCH /users/{id}
요청 본문: 업데이트할 사용자의 정보를 포함하는 JSON / XML 데이터
응답: 적절한 상태 코드와 함께 성공 메시지 또는 업데이트된 사용자의 정보
4. Delete (삭제): 기존 데이터를 삭제하는 작업이다. DB에서 특정 정보를 제거하는 것이다. HTTP 메서드에서는 DELETE가 이 작업에 해당한다.
DELETE /users/{id}
응답: 적절한 상태 코드와 함께 성공 메시지 또는 삭제된 사용자의 정보
[REST API 설계 규칙]
1. URI가 길어지는 경우 언더바(_) 대신 하이픈(-)을 사용한다
(bad)
GET /users/profile_image
GET /users/profileImage
(good)
GET /users/profile-image
2. URI는 / 구분자를 사용하여 자원의 계층 관계를 나타내고, URI 사이에 연관 관계가 있는 경우 /리소스/고유ID/하위-리소스 순으로 작성한다!
(bad)
GET /users/profile/{user-id}
(good)
GET /users/{user-id}/profile
※ 보안 정책에 의해 GET, POST 만 허용하는 경우 자원 조작을 위한 보조이벤트(/update, /delete)를 URI 마지막에 추
가한다
참고 및 출처: https://idkim97.github.io/2022-08-17-CRUD%EB%9E%80/, https://www.youtube.com/watch?v=2j9uMMK2d-M
'웹 > 웹 지식' 카테고리의 다른 글
[웹 지식] 템플릿 엔진(feat. JSP, Thymeleaf, Freemarker) (2) | 2024.10.06 |
---|---|
[웹 지식] .jar 파일과 .war파일은 무엇일까? (4) | 2024.10.06 |
[웹 지식] API와 RESTful API (3) | 2024.10.05 |
[웹 지식] URI와 URL, URN 정확히 짚고 넘어가기 (2) | 2024.10.05 |
[웹 지식] 엔드포인트(Endpoint)에 대해서 (1) | 2024.10.05 |