[TIL]10.31 Rest API

2019. 10. 31. 23:05TIL

오늘 한일

Rest API를 나는 endpoint 만 보고도 이 API가 어떤 역할을 하는지 알 수 있게 만드는 것이라고 생각하고 있었다. 

users/add , users/delete 이런 식으로 명시하면 된다고 생각했지만 이것을 잘못된 방법이였다.

URI는 행위가 나타나면 안 되고 동사보다는 명사로 지정해야 한다고 한다. 

 

REST(REpresentational State Transfer),

"웹에 존재하는 모든 자원(이미지, 동영상, DB 자원)에 고유한 URI를 부여해 활용하는 것이다.

HTTP 메서드

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

URI는 정보의 자원을 표현해야 한다. (리소스명은 동사보다는 명사를 사용)

 

GET – 조회

PUT –  생성 및 업데이트

DELETE – 제거

POST – 생성

 

이 메서드들을 사용하여 API를 설정한다. 나는 post와 get 만 사용을 하였는데 create가 아닌 곳에서 post를 사용하는 것은 매우 좋지 않은 예라고 한다.

 

get method 사용

Ex) GET  /containers/1

router.get("/:id", async (req, res) => {
  contaners
    .findAll({
      where: {b_key: req.params.id}
    })
    .then(result => res.json(result))
    .catch(err => res.send(err))
})

put method 사용

Ex) PUT  /containers/1

router.put("/:id", async (req,res) => {
  let boardExist = await contaners.findOne({
    where:{
      b_key: req.params.id
    }
  })
  .....

DELETE method 사용

Ex) DELETE  /containers/1

router.delete("/:id", async (req, res) =>{
  let ctExist = await contaners.findOne({
    where:{
      ct_key: req.params.id
    }
  })
  .....

POST method 사용

Ex) POST  /containers/1

router.post("/:id", async (req,res) => {
  contaners
    .create({
      ct_name: req.body.ct_name,
      b_key: req.params.id
    })
    ......

내가 작성했던 API 들을 위의 예시들처럼 전체적으로 수정해 주었다. rest API에 대해서 잘못 알고 있었는데 이 점을 바로 잡을 수 있었다. 

 

restAPI는 행위에 관한 부분은 메소드로 표현하고 URI 에서는 정보의 자원에 대해서만 작성해야한다. 그리고 한 자원을 특정할때 :id 등의 값들을 붙여준다.

 

참고 자료: https://meetup.toast.com/posts/92

 

'TIL' 카테고리의 다른 글

[TIL]11.2 react-bootstrap  (0) 2019.11.02
[TIL]11.01 front- flow  (0) 2019.11.01
[TIL] 10.30 JWT 사용자 인증  (0) 2019.10.30
[TIL] 10.29 crpyto, user table 재설정  (0) 2019.10.30
[TIL] mysql 찝찝한 해결, migration/seed, crpyto 암호화  (0) 2019.10.28