반응형
REST API
REST API : REST를 기반으로 만들어진 API
- API - 데이터와 기능의 집합을 제공하여 컴퓨터 프로그램간 상호작용을 촉진하며, 서로 정보를 교환가능 하도록 하는 것
REST : 웹 상의 자료를 별도의 전송 계층 없이 전송하기 위한 간단한 인터페이스
- REST 원리를 따르는 시스템을 RESTful로 지정
REST 구성
- 자원(RESOURCE) - URL
- 행위(Verb) - HTTP METHOD
- 표현(Representations) - HTTP Message Pay Load
REST 특징
- 서버 - 클라이언트 구조(Server-Client)
- REST 서버와 클라이언트간의 역할이 확실히 구분되기 때문에 클라이언트와 서버에서 개발할 내용이 명확해지고 서로간 의존성이 줄어듬
- 무상태성(Stateless)
- 작업을 위해 상태정보를 따로 저장하고 관리하지 않음. 따라서 서비스의 자유도가 높아지고 서버에서 불필요한 정보를 관리하지 않아 구현이 단순해짐
- server는 각각의 요청을 별개의 것으로 인식, 처리하기때문에 처리방식에 일관성을 부여
- 캐시 처리 가능(Cacheable)
- REST는 HTTP라는 웹표준을 그대로 사용하기 때문에 HTTP가 가진 캐싱 기능이 적용 가능
- 캐시 사용을 통해 응답시간이 빨라지고 REST Server 트랜잭션이 발생하지 않기 때문에 전체 응답시간, 성능, 서버의 자원 이용률을 향상시킬 수 있음
- 계층화(Layered System)
- REST 서버는 다중 계층으로 구성될 수 있으며, 보안, 암호화등 계층을 추가해 구조상 유연성을 둘 수 있고, 네트워크 기반의 중간매체 사용할 수 있게함
- 인터페이스 일관성(Uniform Interface)
- Uniform Interface는 지정한 리소스에 대한 조작을 통일되고 한정적인 인터페이스로 수행하는 아키텍처 스타일을 일컬음
- 서버 - 클라이언트 구조(Server-Client)
REST API 디자인 가이드
설계시 가장 중요한 항목:
- URI는 정보의 자원을 표현해야 함.
- 자원에 대한 행위는 HTTP Method(GET, POST, PUT, DELETE)로 표현함.
REST API 중심 규칙
1) URI는 동사보다는 명사를, 대문자보다는 소문자를 사용해야 한다.
Bad Example http://twintrip.site/Running/ Good Example http://twintrip.site/run/
2) 마지막에 슬래시 (/)를 포함하지 않는다.
Bad Example http://twintrip.site/test/ Good Example http://twintrip.site/test
3) 언더바 대신 하이픈을 사용한다.
Bad Example http://twintrip.site/test_blog Good Example http://twintrip.site/test-blog
4) 파일확장자는 URI에 포함하지 않는다.
Bad Example http://twintrip.site/photo.jpg Good Example http://twintrip.site/photo
5) 행위를 포함하지 않는다.
Bad Example http://twintrip.site/delete-post/1 Good Example http://twintrip.site/post/1
출처
- https://meetup.toast.com/posts/92
- https://khj93.tistory.com/entry/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-REST-API%EB%9E%80-REST-RESTful%EC%9D%B4%EB%9E%80
jQuery
- 제이쿼리는 웹사이트에서 자바스크립트를 쉽게 활용할 수 있도록 하는 라이브러리
- 제이쿼리의 특장점
- 웹페이지 상에서 요소(Element)를 쉽게 찾고 조작할 수 있음
- 거의 모든 웹브라우저에서 대응할 정도의 호환성
- 네트워크, 애니메이션 등 다양한 기능 제공
- 짧고 유지관리 용이한 코드 작성 지원
- 관련 플러그인들이 공개되어있어 직접 구현하거나 확장 가능
AJAX
javascript와 XML을 이용한 비동기적 정보교환 기법
Ajax의 특징
- 페이지 새로고침 없이 서버에 요청(비동기성)
- 전체 페이지가 아니라 일부분만을 업데이트 할 수 있게 함
- 서버로부터 데이터를 받고 작업을 수행
- 페이지 새로고침 없이 서버에 요청(비동기성)
Ajax의 장단점
- 장점
- 서버에서 처리가 완료될때까지 기다리지 않고 다른 프로세스 진행 가능
- 비동기 방식이기 때문에 UI를 변경할 수 있음
- 웹페이지 속도 향상
- 단점
- 연속으로 데이터를 요청하면 서버 부하 증가할 수 있음
- 히스토리 관리가 안되므로 보안에 취약
- HTTP 클라이언트 기능 한정
- 장점
jQuery에서 Ajax를 불러오는 메소드
$.ajax()
: Ajax 요청을 받는 가장 간단한 방법$.ajax({ url: "", type: "", cache: , dataType: "", data: "", success: function(data){ }, error: function (request, status, error){ } });
- url : 요청 url을 의미한다.
- type : 데이터 전송방식. GET 또는 POST
- cache : 요청 페이지의 캐시 여부. false 또는 true
- datatype : 서버에서 받아올 데이터를 어떤 형태로 해석할 것인지. xml, json, html, script를 선택할 수 있다.
- data : 서버로 데이터를 전송할 때 사용한다. "name="+name 이런 형태로
- success : Ajax 통신에 성공했을 때 실행되는 이벤트.
- error : Ajax 통신에 실패했을 때 실행되는 이벤트. request, status, error로 에러 정보를 확인할 수 있다.
출처
GET방식과 POST 방식
GET 메소드와 POST 메소드는 HTTP 프로토콜에서 데이터 전송을 위해 지원하는 메소드 중 일부분
GET 방식
ex) http://khj93.tistory.com/test_api?param1=value1¶m2=value2
URL에 Parameter를 붙여서 전송
URL뒤에
?
를 사용하여 Parameter를 작성하게 되고&
을 붙여 여러개의 Parameter를 구분GET방식은 데이터를 전송하게 되며 URL에 Parameter를 전송하기 때문에 body영역을 사용하지 않음
URL에 데이터를 실어 보내기 때문에 대용량 데이터 전송을 하기에 제한 사항이 있음.
한번 요청시 URL포함 255자 까지 전송이 가능하며 HTTP/1.1 에서는 2048자 까지 가능
여러번 적용하더라도 결과값이 바뀌지 않음
캐싱이 가능하여 한 번 접근했던 정보를 다시 접근할 때 빨리가져와 빠름
POST 방식
ex)
HEADER 영역
Content-Type:application/json; charset=UTF-8
.....
BODY 영역
{
"param1":"value1",
"param2":"value2"
}
- body영역에 데이터를 실어 보낸다.
- 데이터 전송양에 길이 제한이 없으며 대용량 데이터를 보내는데 적합
- 데이터를 전송할때에는 Body영역 데이터 타입을 Header Content-Type에 명시
- 데이터를 URL을 통해 볼 수 없어 GET 방식보다는 보안적으로 안전
- 여러번 적용하면 결과값이 바뀜
- GET방식에 비해 상대적으로 느림
반응형