데브코스/강의 정리

3주차 API 설계하기

케케_ 2024. 8. 28. 14:11

클라이언트: 사용자, 프론트엔드

  • 사용자 -> 프론트엔즈 -> 벡엔드 순서기 떄문

정적 페이지: 웹 서버

동적 페이지: 웹 어플리케이션 서버, 데이터 베이스

 


백엔드 개발자는 API를 만든다.

  • API(Application Programming Interface)
    • 개인과 기업 사이의 데이터 제공을 도와줌
    • 예) 개인이 서울교통공사에서 데이터를 요청할 경우 API가 교통 공사 앞에서 요청을 처리해줌 (사용자와 기업 사이), 즉 데이터 제공
  • 인터페이스: 중간에서 양쪽에 있는 친구들을 중재/매개체가 되어주는 역할
    • GUI: 컴퓨터(프로그램)한테 명령을 내릴 때, 그래픽을 사용해서 명령을 내리는 방식
    • CLI: 명령어 문장(줄) 컴퓨터한테 명령을 내리는 거
  • REST API
    • 웹(인터넷 망의 가상 공간) 개발자는 인터넷을 돌아다니기 위한 규약(HTTP)을 잘 지켜야,,
      • 효율적임!
    • REST API: http 규약을 잘 따른 API
    • RESTful API: http 규약을 매우매우 잘 따른 API

 


프로토콜: 통신 약속

  • 웹 프로토콜 http: HyperText Transfer Protocol
  • 인터넷 상에서 공유/전달 하고 싶은 모든 것들은 다 http에 넣어 보내야함!

HTTP 프로토콜 템플릿

  • head: 통신 상태(숫자=http (status) code), 응답 형태(html임) 
  • body: 웹 페이지 화면에 뿌려질 내용
    1. 전달해줄 데이터/ 화면/ ...
    2. 이 데이터 좀 줄래? + "목적"...
      • 예) 전체 상품 보고 싶어 = 전체 상품 리스트 + "조회"
      • 이 상품 등록해줘 = 상품 등록 + "등록"

 


그럼 이거 해달라 저거 해달라 요청은 어떻게?  URL

  • URL: Uniform Resource Locator
    • 인터넷 상에서 웹 페이지가 어디있는지 "위치"를 알려주는 것 뿐 아니라, 데이터 연산을 해달라고 서버에 요청을 보내는 방법
    • http://localhost:8888 (local host: 내 컴퓨터 주소)
      • http://localhost:8888(=야 컴퓨터야)/전체 상품 조회
      • http://localhost:8888/상품 등록
      • http://localhost:8888/전체 상품 삭제
    • URL + method 연습
      • http://localhost:8888/post product - 상품 "등록" => "POST" /product
      • http://localhost:8888/select_all_products - 전체 상품 "조회" => "GET" /products
      • http://localhost:8888/DeletAllProducts - 전체 상품 "삭제" => "DELETE" /products
    • <REST APL URL 규칙>
      • 소문자만 사용, 대문자 X
      • 언더바 X,  하이픈(-) O
      • 마지막 / 포함 X
      • (중요) 행위를 포함하지 않습니다. = 목적(method)을 포함하지 않습니다.
      • 파일 확장자 포함 X
      • 복수형을 쓴다.

 


API는 어떻게 사용???

  • API 사용 예
    • 쇼핑몰
      1. 쇼핑몰 메인 페이지(메인 페이지에 전체 상품이 보여진다는 가정): 전체 상품 조회 API -> 전체 상품 데이터 받고 -> 받은 데이터를 페이지에 뿌림
      2. 상품1 상세 페이지: 상품1 개별 조회 API -> 데이터를 받아서 -> 틀에 맞게 뿌려줌
      3. 상품 관리 페이지(각 상품에 대한 요약(상품명, 가격, ...)과 수정(수정페이지 이동)이 있다는 가정): 전체 상품 조회 API -> 데이터 ...
      4. 상품 수정 페이지: 상품1 개별 조회 API                     // 수정 완료 버튼 -> 상품1 수정 API 
  • URL + method 연습 2 "API 설계"
    1. 전체 상품 "조회" GET
      • http://localhost:8888/products
    2. 상품 (id) 개별 "조회" GET
      • 상품"들" 중에 id로 개별 조회
      • http://localhost:8888/products/{id}
        • 상품2 개별 조회 -> id=2인 데이터 요청
          • http://localhost:8888/products/2
        • 상품1 개별 조회 -> id=1인 데이터 요청
          • http://localhost:8888/products/1
    3. 상품 개별 "수정" PUT
      • /producst/{id}
  • 복수형으로 표현하면 좋은 이유
    • 상품"들" 중에 id 값을 가지는 개별 데이터
    • 통일감