본문 바로가기
CS공부

기본기 닦기(5) - API,Rest API

by 티코딩 2024. 1. 3.

ㅇ API(Applicaition Programming Interface)

  • 개념 : 한 프로그램에서 다른 프로그램으로 데이터를 주고 받기 위한 방법. 이렇게 한줄로도 설명가능하다.쉬운예시로 리모컨에 버튼이 하는역할이 API라고 생각하면 쉽다. 다른 예를 들어보면, 날씨 앱이나 지도 앱을 통해 어떻게 API가 사용되는지 생각해보자. 날씨 앱은 실시간으로 날씨 정보를 DB로부터 받아오는 것처럼, API는 앱과 다른 소프트웨어 간에 데이터를 주고받는것이다.
  • 구성 : 

앞에 POST는 HTTP 메서드로써, 주로 DB에 새로운 데이터를 넣을때, 리소스를 생성할 때 사용한다. POST 메서드 말고도 다양하게 존재한다. 이것들은 밑에서 알아보자. 다음으로 서버의 주소. 밑의 예시는 로컬에서 테스트할때라 localhost:8080으로 되어있다. 그다음에 /api/v1/users/signup 이 부분이 엔드포인트이다. 엔드포인트는 클라이언트가 리소스에 접근하기 위해 사용되는 URI로서, 알기 쉽게 만들어야 한다. 코드를 보면 아래와 같다. spring에선 @GetMapping, @PostMapping, @PatchMapping .... 등등 애너테이션을 붙히고("/엔드포인트") 이런식으로 사전에 합의된 엔드포인트로 만든다.

@PostMapping("/signup")
public ResponseEntity<String> signup(@Validated @RequestBody UserDto.Signup requestBody) {
    User user = userService.signup(userMapper.userDtoSignupToUser(requestBody));

    return ResponseEntity.ok("이메일 인증을 해주세요.");
}

 

  • HTTP메서드
  1. GET: 서버로부터 정보를 요청할 때 사용됨. 주로 데이터를 검색할 때 사용되며, 요청한 데이터는 URL에 포함될 수 있음.
  2. POST: 서버에 새로운 데이터를 제출하거나 리소스를 생성하기 위해 사용됨. 주로 HTML 양식을 통해 데이터를 서버로 보내거나, JSON이나 XML과 같은 데이터를 전송할 때 사용된다.
  3. PUT: 리소스를 업데이트하거나 새로운 리소스를 생성할 때 사용됨. 주로 전체 리소스를 업데이트할 때 활용된다.
  4. PATCH: 리소스의 일부를 업데이트할 때 사용됨. PUT과는 달리 리소스 전체를 업데이트하는 것이 아니라 일부를 업데이트할 때 사용된다.
  5. DELETE: 서버에서 특정 리소스를 삭제하기 위해 사용된다.
  6. OPTIONS: 서버에서 지원되는 메서드들을 확인하기 위해 사용된다. 클라이언트가 서버에게 요청하여 어떤 메서드들이 허용되는지 확인할 때 사용된다.
  7. HEAD: GET 메서드와 유사하지만, 서버는 실제 데이터를 반환하지 않고 헤더만을 반환함. 주로 리소스가 수정되었는지 등을 확인하기 위해 사용됨.
  8. TRACE: 클라이언트가 보낸 요청이 서버에 도달하는 경로를 확인하기 위해 사용됨. 보안상의 이유로 일반적으로 비활성화되어 있음.
  9. CONNECT: 대개 웹 프록시가 사용하며, 대상 리소스에 대한 터널을 설정하기 위해 사용됨.

 

ㅇ RestAPI

API는 저런건데 그렇다면 RestAPI는 뭘까? Rest API는 RESTful 아키텍처 스타일을 따르는 API이고,인터넷 식별자 URI와 HTTP를 기반으로하고 JSON을 주로 사용한다. 가장 중요한 특성은 각 요청이 어떤 정보나 동작을 위한 것인지 그 모습 자체만으로 추론이 가능하다는 것이다.

RestAPI는 문서, 그림, 데이터등의 자원을 이름으로 구분해 해당 자원에 대한 상태, 정보를 주고받는것을 의미한다. 또, HTTP 메서드를 활용해 해당 자원에 대한 CRUD를 적용하는 것을 의미한다.

이 Rest API를 제대로 쓰기위한 영상을 첨부하겠다.

https://www.youtube.com/watch?v=4DxHX95Lq2U

 

 

ㅇ 참고자료

https://www.youtube.com/watch?v=C7yhysF_wAg