-
인턴 Day03 (REST Api, Http Method GET, POST, PUT, DELETE, REST )인턴일지 2022. 5. 2. 16:14
0. Day03
- 배운 것
1. Http Method GET, POST, PUT, DELETE
2. REST API
1. Http Method
HTTP 메소드는 클라이언트가 웹 서버에게 사용자 요청의 목적이나 종류를 알리는 수단이다. 최초의 HTTP에서는 GET 메소드 하나밖에 없었지만 이후 다양한 메소드들이 생겨났다.
2. GET
GET 메소드는 주로 데이터를 읽거나 검색 할 때에 사용되는 메소드이다. 만약에 GET요청이 성공적으로 이루어진다면 XML이나 JSON과 함께 200 (Ok) HTTP 응답 코드를 리턴한다. 에러가 발생하면 주로 404 (Not found) 에러나 400 (Bad request) 에러가 발생한다.
- HTTP 명세에 의하면 GET 요청은 오로지 데이터를 읽을 때만 사용되고 수정할 때는 사용하지 않는다.
- 데이터를 변경하는 연산에 사용하면 안된다.
- 데이터를 조회하는 것이기 때문에 요청시에 Body 값과 Content-Type 가 비워져있다.
- 데이터 조회에 성공한다면 Body 값에 데이터 값을 저장하여 성공 응답을 보낸다.
예시
GET /user/1
3. POST
POST 메소드는 주로 새로운 리소스를 생성(create)할 때 사용된다. 조금 더 구체적으로 POST는 하위 리소스(부모 리소스의 하위 리소스)들을 생성하는데 사용된다. 성공적으로 creation을 완료하면 201 (Created) HTTP 응답을 반환한다.
- 두 개의 같은 POST 요청을 보내면 같은 정보를 담은 두 개의 다른 resource를 반환할 가능성이 높다.
- 데이터를 생성하는 것이기 때문에 요청시에 Body 값과 Content-Type 값을 작성해야한다. 해당 예시는 JSON을 통해서 작성된 예시이다.
- URL을 통해서 데이터를 받지 않고, Body 값을 통해서 받는다.
- 데이터 조회에 성공한다면 Body 값에 저장한 데이터 값을 저장하여 성공 응답을 보낸다.
예시
POST /user body : {date : "example"} Content-Type : "application/json"
4. PUT
PUT는 리소스를 생성 / 업데이트하기 위해 서버로 데이터를 보내는 데 사용됩니다.
- PUT 요청은 idempotent 합니다.
- 동일한 PUT 요청을 여러 번 호출하면 항상 동일한 결과가 생성됩니다.
- 데이터를 수정하는 것이기 때문에 요청시에 Body 값과 Content-Type 값을 작성해야한다. 해당 예시는 JSON을 통해서 작성된 예시이다. URL을 통해서 어떠한 데이터를 수정할지 파라메터를 받는다. 그리고 수정할 데이터 값을 Body 값을 통해서 받는다.
- 데이터 조회에 성공한다면 Body 값에 저장한 데이터 값을 저장하여 성공 응답을 보낸다.
예시
PUT /user/1 body : {date : "update example"} Content-Type : "application/json"
5. DELETE
서버의 데이터를 삭제
- 데이터를 삭제하는 것이기 때문에 요청시에 Body 값과 Content-Type 값이 비워져있다.
- URL을 통해서 어떠한 데이터를 삭제할지 파라메터를 받는다.
- 데이터 삭제에 성공한다면 Body 값 없이 성공 응답만 보내게 된다.
예시
DELETE /user/1
6. REST Api
- 정보들이 주고받아지는 데 있어서 개발자들이 사이에 널리 쓰이는 일종의 형식이다.
- 어떤 서비스를 만들 때는 혼자 만드는 것이 아니다. RESTful하게 만든 API는 요청을 보내는 주소만으로도 대략 이게 뭘 하는 요청인지 파악이 가능하다.
- REST API로 요청을 보낼 때는 HTTP 규약에 따라 신호를 전송한다.
* API : 소프트웨어가 다른 소프트웨어로부터 지정된 형식으로 요청, 명령을 받을 수 있는 수단을 말한다.
'인턴일지' 카테고리의 다른 글
인턴 Day06 (datatables) (0) 2022.05.03 인턴 Day05 (Html name,id tag / 에러 종류 ) (0) 2022.05.03 인턴 Day04 (DB 명명 규칙, Ajax ) (0) 2022.05.02 인턴 Day02 (localstorage, sessionstorage, 전자정부프레임워크, ERP) (0) 2022.05.02 인턴 Day01 (jQuery Event, Intellij 단축키, VCS) (0) 2022.05.02