REST API (Representational State Transfer)
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
댓글
댓글 쓰기