REST API

가언·2024년 7월 5일
post-thumbnail

✅ REST API란?

(Representational State Transfer)

클라이언트와 서브 간의 HTTP 통신을 효율적으로 할 수 있게 함.

  • 설계 가이드
  1. 첫 번째, URI는 정보의 자원을 표현해야 한다.
  2. 두 번째, 자원에 대한 행위는 HTTP Method(GET, POST, PUT, DELETE)로 표현한다.

✅ 그렇다면.. HTTP는 뭘까요?

인터넷 vs 웹

  • 인터넷: TCP/IP 기반의 네트워크가 세계적으로 확대되어 연결된 네트워크들의 네트워크를 의미한다.
  • 웹: HTML이라는 문서 형태와 HTTP라는 문서 전송 프로토콜, URL로 문서의 위치를 표시하는 시스템을 말한다. 인터넷 상의 가상 공간, 인터넷 가는 길목 하나에 게시판처럼 붙여놓은 것! => 우리 모두를 위한 정보 공유의 장

Q. HTML은 왜쓰나요?

hyertext markup language으로 링킹을 하기 위해!

Q. http request와 response의 구조

HTTP Request Message 구조**

  • Start Line: HTTP method(목적="CRUD"), Request target
  • Headers: Host(post-number such as 라디오 주파수 번호..), Content-Type, Authorization, Cookie
  • Body

HTTP Response Message 구조

  • Status Line: Status Code, message
  • Headers: Cotent-Type, set-cookie
  • Body

Q. URL, ULI, ULN의 차이?

  • URL (User Location Information): 인터넷 상에서 자원(resource)의 위치를 나타내는 주소
    ex) https://www.example.com/path/to/resource?query=example

  • ULI(Uniform Location information): 사용자의 위치 정보
    ex) 사용자가 접속한 Wi-Fi 네트워크의 MAC 주소와 해당 네트워크의 위치 데이터, 사용자의 GPS 장치가 현재 위치를 위도 40.7128, 경도 -74.0060 (뉴욕 시)로 보고하는 경우

  • ULN(Universal Location Number): 특정 위치를 고유하게 식별하기 위해 사용되는 번호
    ex) ULN 1234567890123 (특정 창고의 고유 식별 번호)

✅ REST API 설계 맛보기

  • 상품 전체 조회
    "/"의 의미: "~의"
methodURI
GET/items
  • 상품 개별 조회
methodURI
GET/items/:id
  • 상품 등록
methodURIStatus CodeRequest BodyResponse Body
post/items성공 200, 201 / 실패 400{"name": "상품명", "price":가격}-

✅ HTTP method

  • POST:CREATE
  • GET: READ
  • PUT: UPDATE
  • PATCH: UPDATE
  • DELETE: DELETE

Q. 비밀번호 변경 : PUT/PATCH

- put와 patch의 차이점

  • PUT 요청 시 요청을 일부분만 보낸 경우 나머지는 default 값으로 수정되는 게 원칙이므로,바뀌지 않는 속성도 모두 보내야 한다.
  • 하지만, PATCH를 이용하면 변경하고자 하는 부분에 대해 요청을 보내면,
    새롭게 바뀐 부분만 반영되며, 나머지는 기존의 데이터가 유지된다.
PUT PUT PATCH
원본 {"이름":"명수", "나이":40}
Before {"이름":"명수", "나이":40} {"이름":"명수"} {"이름":"명수"}
After {"이름":"명수", "나이":40} {"이름":"명수", "나이":null} {"이름":"명수", "나이":40}

A. 비밀번호를 변경할 경우에는 id/pw 테이블이 나뉘어져 있는 ERD 구조로 되어있는 경우가 많다. ("역등성 ") 그렇기 때문에 PUT을 사용해도 무관함.

id age name job

id pw
(이유: 로그인 시 참조할 테이블을 따로 두어 select 효율성을 높이고, 굳이 건들이지 않을 데이터를 피할 수 있어, 관리권한을 최소하여 보안을 강화함.)

정리

PUT vs PATCH

  • put: 전체 수정
  • patch: 일부 수정

[번외]
1. 누가 더 빠를까요?
2. 누가 더 까다로울까요?

✅ 기왕 나온 김에,,

맞춰볼까요?

데이터 베이스에 비밀번호를 암호화해서 저장해뒀습니다.
로그인을 하면 비밀번호가 날 것(암호화 되지 않은 상태)으로 입력이 될 텐데요.
날 것의 입력값과 암호화된 값을 어떻게 비교할 수 있을까요?

  • 옛날: 비밀번호 찾기하면 알려줌 -> 너 이걸로 비밀번호 했더라?
  • 지금: 비밀번호 찾기하면-> 임시코드를 알려주거나, 다시 비밀번호 새로운 걸로 설정(옛날에는 복호화가 가능한 알고리즘을 사용하지만, 요즘은 복호화가 안되는 알고리즘을 사용하기 때문에)
  • 그럼 어떻게 날것과 암호화된 비밀번호를 어떻게 비교를 할까?
    날것의 상태가 들어오면 암호화해서 DB의 암호화된 값으로 비교하는 방식을 사용함!!!
profile
@gari_guri

0개의 댓글