서로 정보전달 및 조회를 위해 Packet이라는 단위로 데이터를 주고 받는다.
Packet은 Header와 Body로 나뉘어 있다
이러한 Packet은 method를 통해 그 용도에 따라 전달된다.
/users?gender = female & major = math # 성별이 여자고 전공이 수학인 user
/users/gender/female # 성별이 여자인 user 조회
-> 일반적으로 우리가 어떤 자원(데이터)의 위치를 특정해서 보여줘야 할 경우 Path variable을 쓰고, 정렬하거나 필터해서 보여줘야 할 경우에 Query parameter를 쓴다. 참고자료
구) xml (tag 형태)
<employees>
<employee>
<firstName>John</firstName> <lastName>Doe</lastName>
</employee>
<employee>
<firstName>Anna</firstName> <lastName>Smith</lastName>
</employee>
<employee>
<firstName>Peter</firstName> <lastName>Jones</lastName>
</employee>
</employees>
최근) Json
{"employees":[
{ "firstName":"John", "lastName":"Doe" },
{ "firstName":"Anna", "lastName":"Smith" },
{ "firstName":"Peter", "lastName":"Jones" }
]}
클라이언트와 서버 간 데이터를 주고 받을 때 사용하는 기능 인터페이스
ex)
회원가입 API(method:Post, URI:/users)
회원수정 API(method:Patch, URI:/users/1)
회원삭제1 API(method:delete URI:/users/1)
회원삭제2 API(method:patch URI:/users/1/status)
cf) URI에는 동사를 사용하지 않으며, 언더바를 사용하지 않고 하이폰을 사용, 그리고 각 URI 청크는 4개를 넘지 않는 것이 좋다.
참고
URI
URI는 특정 리소스를 식별하는 통합 자원 식별자(Uniform Resource Identifier)를 의미한다. 웹 기술에서 사용하는 논리적 또는 물리적 리소스를 식별하는 고유한 문자열 시퀀스다.
URL
URL은 흔히 웹 주소라고도 하며, 컴퓨터 네트워크 상에서 리소스가 어디 있는지 알려주기 위한 규약이다. URI의 서브셋이다.
-> URL은 URI에 포함된다. 참고자료
두 가지 유효성을 검사해주어야 한다.
ex) 이메일 형식을 따르는가? 휴대전화 형식(010-xxxx-xxxx)에 따라 데이터를 입력하는가?
ex) 회원가입으로 입력 시 이미 있는 유저 정보로 하는가?
Query 검사를 통해 꼭 두 가지 유효성 모두 검사해주어야 한다.
Route--------------------Controller-------Service and Provicer-------DAO
(외부요청)------------(data전달, 유효검사)-------(비즈니스 로직 구현)----(쿼리 전달)