REST API (Representational State Transfer)



REST API 는 서버에 요청을 보낼 때 주소를 통해 요청의 내용을 표현하는 방식이다.


REST 구성

 - 자원(RESOURCE) - URI

 - 행위(Verb) - HTTP Method

 - 표현(Representations)



HTTP 요청 메서드

GET : 서버의 자원을 가져오려고 할 때 사용한다. 

POST : 서버에 자원을 새로 등록하고자 할 때 사용한다. 또는 뭘 써야할지 애매할 때도 사용한다.

PUT : 서버의 자원을 요청에 들어있는 자원으로 치환하고자 할 때 사용한다. 완전히 데이터를 바꿀 때 사용

PATCH : 서버 자원의 일부만 수정하고자 할 때 사용한다.

DELETE : 서버의 자원을 삭제하고자 할 때 사용한다.



요약해보면 아래와 같다.

GET => Read, index, retrieve

POST => Create

PUT => Replace

PATCH => Modify

DELETE => Delete



REST API 사용시 유의할점

- URI는 정보의 자원을 표현해야 한다.

- 자원에 대한 행위는 HTTP Method (GET, POST, PUT, PATCH, DELETE)로 표현한다.



REST API 예시

ex) POST 
Node.js 로 작성한 백엔드 부분의 회원가입 부분의 일부이다.

app.post('/api/users/register', (req, res) => {

//회원 가입 할떄 필요한 정보들을 client에서 가져오면
//그것들을 데이터 베이스에 넣어준다.
const user = new User(req.body)

user.save((err, userInfo) => {
if (err) return res.json({ success: false, err })
return res.status(200).json({
success: true
})
})
})

해당 코드는 클라이언트측에서 www.example.com/api/users/register 로 작성한 데이터를 보내어 Post Method를 사용하여 회원정보를 등록하는것을 코드이다.



ex) GET
Node.js 로 작성한 백엔드 부분의 인증관련 부분의 일부이다.

app.get('/api/users/auth', auth, (req, res) => {
//여기 까지 미들웨어를 통과해 왔다는 얘기는 Authentication 이 True 라는 말.
res.status(200).json({
_id: req.user._id,
isAdmin: req.user.role === 0 ? false : true,
isAuth: true,
email: req.user.email,
name: req.user.name,
lastname: req.user.lastname,
role: req.user.role,
image: req.user.image
})
})

해당 코드는 login에 성공했을때 로그인한 user의 정보를 json으로 전달하는 코드이다.

즉 user에 대한 정보를 받아오기위해서 GET Method 를 사용했다.


위의 두가지 예시와 같이 HTTP Method 를 사용할 수 있다.


참고:

기본 개념
https://bcho.tistory.com/953

디자인 가이드
http://bcho.tistory.com/954

보안 가이드
http://bcho.tistory.com/955


댓글