JAVA

1-1. API - API란?

쩨비 2021. 8. 5. 14:18
728x90

다음 프로젝트가 서버간 통신을 통해 데이터를 주고받는 프로젝트일 수 있다는 이야기를 들었다.

서버간 통신을 통해 데이터를 왔다 갔다 하는 것은 기존에도 몇번 해보긴 하였으나 화면만 찍어내기 바빴던 일상에 리마인드를 하고 프로젝트에 투입하면 좋겠다 싶어 API에 대한 내용을 작성해보겠다.

 

일단 서버간 통신을 통해 데이터를 주고 받을려면 API에 대한 개념부터 알고 시작하자

 

그래서 API란 무엇인가?

애플리케이션 프로그래밍 인터페이스(Application Programming Interface)

 

라고 한다. 하지만 상세한 이야기는 다른 블로그에 정확하고 자세히 설명되있으니 넘어가자

 

이 블로그를 통해 간단히 '아~ 이런게 있구나' 정도만 알아가면 좋을것 같다.

 

설명하자면 API란 폭넓게 사용하고 있다.

 

예를 들어 키보드에서 A를 타이핑하면 지금 작성하고 있는 게시물에 A가 입력되는 것도 Interface이다. 그리고 B를 타이핑 하면 B가 입력이 된다.

 

이렇게 사용자가 원하는 결과물을 얻기 위해 키보드라는 주체가 컴퓨터라는 주체에게 요청을 하고 요청을 받은 컴퓨터는 결과를 내고 처리를 한다.

 

위의 예시는 이해하기 쉽도록 물건에 비유했고 프로그래머들이 말하는 API로 설명을 하자면 A라는 서버에서 B라는 서버에 요청을 하면 B라는 서버에서는 그 요청값들을 받고 자신의 서버에서 처리할 수 있는 상태로 파싱을 한 후 데이터를 처리하는 것 이라고 해야 할것 같다.

 

그러면 REST API란 무엇인가?

레프리젠테이셔널 스테이트 트랜스퍼 (Representational State Transfer)

상태를 선택해서 교환하는 프로그래밍 인터페이스 이다?

쉽게 말하면 통신할려고 하는 상태를 정확히 어떤용도로 사용하는 것! 이라고 알아 볼 수 있도록 하는것이다. 만약 매출 관련된 정보를 보내준다고 하자. 그럴때 HTTP 주소에 saleInfo 라고 데이터를 보내주면 받는 쪽에서 saleInfo라는 응답 메소드를 만들어 전달 받은 매출 정보를 파싱해 데이터를 처리한다.

 

일반 API 예시

localhost:8080/1

 

REST API 예시

localhost:8080/sale/Info

 

쉽게 말해 보내는 쪽이나 받는쪽이나 인터페이스 정보가 무엇인지 유추해볼 수 있느냐 없느냐의 차이가 가장 큰 차이점 일것 같다.

 

또한 전송 방식에 따라 사용 용도가 달라진다. 많이 들어보았을 것이다.

 

GET     -  데이터를 읽을때(가져올때). 단, 통신하는 데이터의 정보가 보안상 취약하지 않은 경우에 한해서만(게시판 번호, 주문번호 등)

 

POST   -  데이터를 추가 저장 할때. 단, 꼭 추가 저장만 아니라 URL상 보안을 유지하고 싶은 경우 상황에 따라 사용 가능(게시판 저장, 주문서 생성 - 게시판이나 주문서를 생성시 GET을 사용 할 경우 일반 사용자가 이를 악용/잘못 할 수 있다.)

 

PUT    -  데이터를 전체적으로 수정 ( 수정하려는 테이블의 모든 컬럼이 필요 )

 

PATCH - 데이터를 일부분만 수정 ( 수정하려는 테이블의 일부 컬럼이 필요 )

 

DELETE - 데이터를 삭제

 

위와 같이 용도에 맞게 보내는 쪽이나 받는 쪽이나 전송 방식을 지정해 준다

GET     - localhost:8080/sale/Info/select?saleDate=20210805&goodsCd=0000905  (2021년08월05일, 상품코드로 판매 정보를 받을려고 하는구나)

POST   - localhost:8080/sale/Info/insert  (판매 정보를 추가하려고 하는구나)

PUT     - localhost:8080/sale/Info/update  (판매 정보를 전체적으로 수정하려고 하는구나)

PATCH - localhost:8080/sale/Info/update  (판매 정보를 일부분만 수정하려고 하는구나)

DELETE - localhost:8080/sale/Info/delete (판매 정보를 삭제하려고 하는구나)

 

 

결론

요즘 API 통신으로 데이터를 주고받는 것을 보면 대부분이 REST API를 사용하는건 아닐까? 라고 생각하고 당연히 주는쪽이나 받는쪽이나 REST API로 정보를 정확히 하는게 맞지 않나 싶다. 물론 POST만으로 모든것을 다 처리하는 프로젝트도 있기는 하다. 하지만 그게 과연 정답일까?

 

 

다음 게시물에서 위의 기본적인 개념을 토대로 인터페이스를 간단하게 구현 하도록 하겠다.

 

본 게시물은 개린이의 일기장 같은 형식입니다. 틀린부분도 있을 수 있습니다.