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
댓글
댓글 쓰기