#1. CRUD
1. CRUD의 개념
1) CRUD란?
- 대부분의 컴퓨터 소프트웨어가 가지는 기본적인 데이터 처리 기능인 Create(생성), Read(읽기), Update(갱신), Delete(삭제)를 일컫는 말이다.
- 사용자 인터페이스가 갖춰야할 기능(정보의 참조, 검색, 갱신)을 가리키는 용어로서도 사용된다.
※ CRUD 용어롤 최초로 사용한 논문으로는 Kilov,H(1990)의 논문이다.
2) 프로그램 동작 구분
이름 | 조작 | Method | SQL |
Create | 생성 | POST | INSERT |
Read | 읽기 | GET | SELECT |
Update | 갱신 | PUT | UPDATE |
Delete | 삭제 | DELETE | DELETE |
- 유저 인터페이스 CRUD는 여러 응용 프로그램의 사용자 인터페이스에도 들어 맞는다.
- 예를들어 주소록이나 게시판 같은 소프트웨어가 이에 해당한다.
- 새로운 정보를 추가할 수 있다.
- 새로운 정보를 검색할 수 있다.
- 기존의 정보를 수정할 수 있다.
- 기존의 정보를 삭제할 수 있다.
- 위의 4개의 기능을 모두 해야 완전한 소프트웨어라고 할 수 있다.
- 이 기능들은 매우 기본적이기 때문에 한 묶음으로 설명되는 경우가 많다.
2. Restful API
1) Restful API란?
- CRUD에 입각하여 어떠한 주제 하나를 놓고 입력, 수정, 삭제, 조회가 가능하도록 구성되어진 백엔드 시스템이다.
- Java(Spring), Node.js(Express), PHP, Python 등을 활용하여 구현되고 실질적인 데이터는 DATABASE에 저장된다.
- Ajax를 통해 백엔드와 통신한다는 것은, 데이터베이스에 저장된 내용에 대한 입력, 수정, 삭제, 조회를 백엔드에 요청하는것을 의미한다.
- 이를 위해 구축된 시스템이 Restful API 이다.
2) GET 방식
- 쿼리스트링(QueryString)
- URL뒤에 물음표(?)를 기준으로 하여 변수명=값&변수명=값 의 형식으로 요청변수를 나열하는 방법이다.
- 변수가 URL에 그대로 노출되기 때문에 보안이 필요한 경우 사용해서는 안된다.
- 전송 가능한 데이터의 용량에 한계가 있다. URL의 총 길이는 1024byte를 넘을 수 없기 때문에 포함 가능한 변수의 내용도 그 안에서 결정되어야 한다.
- 변수를 URL에 포함하므로 웹 브라우저로 조작이 가능하다.
https://chan-co.tistory.com/manage/newpost/982?type=post&returnURL=https://chan-co.tistory.com
- Path
- 쿼리스트링 방식에서 변수 명은 미리 정해진 순서로 약속하고, 변수의 값만 전달하는 방식이다.
- URL 구성이 마치 폴더간의 연결처럼 보이기 때문에 쿼리스트링 방식보다는 상대적으로 보안에 유리하지만, 쿼리스트링의 모든 한계를 그대로 가지고 있다.
- 이 방식도 마찬가지로 변수를 URL에 포함하므로 웹 브라우저로 조작이 가능하다.
https://chan-co.tistory.com/manage/newpost/982/post/https://chan-co.tistory.com
3) POST, PUT, DELETE 방식
- 요청 변수는 URL이 아닌 HTTP Header에 포함하여 전송하는 방식이다.
- 서버(백엔드)의 설정에 따라 전송 가능 용량을 설정할 수 있다.
- 파일 업로드가 가능하며, 개발자 도구를 사용할 수 있다면 요청 정보를 열람할 수 있지만, 일반 사용자에게는 요청 변수가 노출되지 않는다는 점에서 상대적으로 보안에 유리하다고 볼 수 있다.
- 웹 브라우저를 통한 조작이 불가능하다.
4) JSON-Server
- json 파일을 데이터베이스로 삼아 Restful API를 간단하게 가동할 수 있게 해주는 오픈소스 프로그램이다.
- 사용 및 설치방법 → https://chan-co.tistory.com/52
5) Insomnia (https://insomnia.rest)
- Restful API와 연동하는 Ajax 기능 구현 전, 백엔드 시스템이 어떻게 가동하는지 테스트할 수 있는 프로그램이다.
- 유료버전이 있지만, 무료로도 사용 가능하다.
'국비수업 > JavaScript' 카테고리의 다른 글
[Javascript] Axios / openAPI (0) | 2022.04.04 |
---|---|
[Javascript] Ajax / JSON-Server (0) | 2022.04.02 |
[Javascript] 라이브러리 활용 (0) | 2022.04.01 |
[Javascript] 데이터 읽기, 쓰기 / window 객체 (0) | 2022.03.31 |
[Javascript] Form 요소 (0) | 2022.03.28 |