RESTful API

seul_velog·2022년 5월 22일
0
post-thumbnail

API

클라이언트와 서버가 데이터를 주고받을 때 ‘요청을 구분할 수 있도록 하는 체계’가 필요하다. 그 체계가 API이다.

  • 클라이언트, 서버와 같은 서로 다른 프로그램에서 요청과 응답을 주고 받을 수 있게 만든 체계이다.
  • 소프트웨어가 다른 소프트웨어의 기능을 쓰기 위해 (요청과 응답) 중간에 필요한 체계이다.

📌 API는 어떤식으로 진행될까? 🤔

  • 응답을 주는 쪽 ‘여기로 요청보내면 이런 응답, 저기로 요청 보내면 저런 응답을 줄게’ 라고 사전에 정한다.
    요청하는 쪽에서 이것을 토대로 정확한 곳에 요청한다.
  • 정확한 곳 → ‘서버주소/A’ 형태로 정의되어 있다. 여기서 '서버주소'는 서버 컴퓨터가 위치한 곳의 주소(IP주소)이다. 뒤의 문자에 따라서 다른 기능(로그인, 회원가입 등)을 수행하도록 정의한다.
    • ex) '서버주소/A' 라고 신호를 보내면 서버가 '로그인 기능' 을 수행하고 응답
    • ex) '서버주소/B' 라고 신호를 보내면 서버가 '회원가입 기능' 을 수행하고 응답
  • 이러한 기능과 서버 주소 정의는 모두 서버개발쪽에서 진행한다. 즉, 서버 개발자가 API를 개발하고, 클라이언트 개발자는 그 API를 사용한다!
  • API를 통해 요청과 응답을 주고 받을 때는 데이터도 같이 담긴다. (로그인 요청시 ID,PW 데이터가 필요하므로 등)

📌 클라이언트 관점 CRUD

  • 클라이언트 소프트웨어는 서버에 요청을 보낸다. 요청은 크게 4 요소로 나눌 수 있다.
    → CRUD : Create, Read, Update, Delete (기획시 중요한 부분)
  • CRUD요청은 각각의 주소를 가지는데, 너무 많아지면 관리가 힘들 수 있다.
    → 체계적인 API관리가 필요해진다.
    → REST 체계등장




REST ?

REST (Representational State Transfer)
: 웹에 존재하는 모든 자원(이미지, 동영상, 데이터)에 고유한 URI를 부여하여 자원(resource)에 대한 주소를 지정하는 방법론, 또는 규칙이다.




RESTful API

REST 특징을 지키면서 API를 제공한다. API 시스템을 구현하기 위한 아키텍처 중에 가장 널리 사용되는 형식이다.

  • 리소스(HTTP URI로 정의된)를 어떻게 한다(HTTP Method, Payload)를 구조적으로 깔끔하게 표현한다.
    • HTTP Method : HTTP request가 의도하는 action을 정의한 것이다.
    • Payload : request에서 server로 보내는 데이터 (body)
  • 프론트엔드에서 '백엔드 API를 호출할 url을 어떻게 만들것인지'와 관련되는 내용이다.

  • 모든 회사에서 통용되는 절대 규칙은 아니며, 일종의 사회 운동이다. 따라서 다양한 방식으로 변형 사용할 수도 있다.

  • RESTful API는 CRUD를 하나의 주소로 관리, 어떤 요청을 보냈는지 파악할 수 있는 ‘메소드’를 붙인다. 즉, 그 자체만으로도 API의 목적이 쉽게 이해 된다.
    Create : POST (올려줘)
    Read : GET (불러와줘)
    Update : PUT(전체) & PATCH(일부) (바꿔줘)
    Delete: DELETE (지워줘)

  • 단점으로는 표준규약이 없어서 안티패턴으로 작성되는 경우가 흔하다.




RESTful API 설계 규칙

  • URI 정보를 명확하게 표현해야 한다.
    • resource는 명사를 사용한다. ex) GET/user/1 → GET/users/1
  • resource에 대한 행위를 HTTP Method(GET, POST, PUT, DELETE)로 표현한다.
    • URL에 HTTP Method가 포함되어서는 안된다. ex) GET delete/user/1 → DELETE/users/1
    • URL에 동사가 포함되서는 안된다. ex) GET/user/show/1 → POST/users/2
  • 파일의 경우 payload의 포맷을 나타내기 위한 파일 확장자를 URI에 포함시키지 않는다.
    (파일 확장자나 url은 미디어컨텐츠의 메타정보 안에 넣어야한다. ✍️ 이 부분은 한번 더 확인해 보자 )
  • URI는 / 구분자를 사용하여 자원의 계층 관계를 나타내는데 사용한다.
  • URI 마지막 문자로 / 를 포함하지 않는다.
  • 불가피하게 URI가 길어지는 경우 - 를 사용해서 가독성을 높이고 _ 는 사용하지 않는다.
  • URI 경로에는 대문자 사용을 피하도록 규정하고 있다.




RESTful API 예시

badGood
GET http://10.58.4.1:8000/detail_pageGET http://10.58.4.1:8000/product
GET http://10.58.4.1:8000/main_pageGET http://10.58.4.1:8000/products
GET http://10.58.4.1:8000/find/productGET http://10.58.4.1:8000/product
POST http://10.58.4.1:8000/add/productPOST http://10.58.4.1:8000/product
POST http://10.58.4.1:8000/product_reviewsPOST http://10.58.4.1:8000/products/1/reviews
POST http://10.58.4.1:8000/product_filterGET http://10.58.4.1:8000/products?name=




reference)
wecode_RESTful API
비전공자를 위한 이해할 수 있는 IT지식

profile
기억보단 기록을 ✨

0개의 댓글