소프트웨어 엔지니어/일반

Rest API, Open API?

shroomie 2024. 8. 15. 16:30

Rest API, Open API? 

 

*Rest API? 먼저 쉽게 개념만 정리해보면,

우리가 네이버에 접속할때, 웹브라우저를 열고 https://naver.com 이라고 치면 네이버 웹 페이지로 가는거처럼, 

Rest API 란것도 , led 를 켜기위해 인터넷 주소(쉽게 그냥 주소라생각하면될듯) 를 입력하면  -> 그에 해당하는 동작 즉 "방에 led 를 켠다" 을 한다 

예를들어 내 집에 light 를 컨트롤하는 서버이름이 myhome.com 이라고 가정하면
https://myhome.com/room1/led?value=on -> room1 에 led(light)를 켜라 

https://myhome.com/room2/led?value=on -> room2 에 led (light) 를 켜라

https://myhome.com/bath1/led?value=on -> 화장실1 에 led (light) 를 켜라  

이런식으로 동작을 시키는거야.  (물론 이걸 하려면 저 서버가 실제 방에 라이트를 컨트롤할수 잇어야 겠지) 
웹브라우저에 저 주소를 넣지만, 실제로 화면으로 뭐가 보이는것이 아닌,

내가 의도한 동작 (불켜기) 을시키는거지

더 자세하게는 아래와 같은 특징들이있는데... 그건 차차 설명해줄께. 
separation of client and server, Statelessness, 
Uniformity of the interface, Caching etc.


*스웨거:  툴 (visual studio 같은 그냥 툴) 
뭐하는 툴이냐면, Open API 스펙대로 Rest API 를 만들수 있는거다.

이런 툴을 왜 쓰느냐면, 아까 방에 불켜는게 3개 4개 정도면 그냥 나 혼자 알아서 관리 하면되지만, 저게 빌딩이거나 (불이 1000개가 있거나) 기능이 불키는거 말고도 보일러, 가스, 에어컨등등 여러가지이면 저 주소도 수천가지가 될꺼잖아? 쉽게 그 수천개의 주소를 잘 관리 할수 있게 해 주는 툴인거야. 


*Open API : 규칙 (영어 문법같은거로 생각하면 쉬울듯)
       뭐하는 규칙? API 를 작성하는 규칙. 예를 들어 /action, /turn-on, /turn-off 를 만들때는 어떤 규칙에 따라 만들면 좋다 정도?

swagger 는 아래의 것들로 구성. 
swagger-editor
swagger-codegen
swagger-UI
swagger-Inspector
swagger-hub

상황에 따라서 필요한 툴을 찾아서 쓰면 됨. 
스웨거 에디터를 인터넷에서 찾아서 확인해 보면 ( -> 귀찮으면 이 링크 : https://editor.swagger.io/)
규칙에 따라 작성을 하면, 그게 Open API 스펙을 따라 작성한게 됨.

그럼 내가 작성한 수천개의 API 들이 어떤 규칙(문법)에 맞게 작성되었다고 볼수 있고,

이렇게 하면 뭐가 좋으냐면, 
1. 규칙(Opne API)에 맞게 작성되어 있으니가 다른 개발자들과 공유가 쉽고, 
2. 규칙으로 작성된 문서는 기존에 개발된 소프트웨어를 이용할수 있음. 
예를 들어 http go/python/node software code 를 자동으로 작성해 준다거나(swagger-codegen) ,
문서화 해준다거나 (swagger-UI) 등등 . It makes life easier. You don`t need to 노가다!


참고. URI, URL ?
자원을 식별할때는 URI mailto:some@example.com , 
자원의 위치나 접근방법 기술할때는 URL https://example.com/page
그럼 이거도 결국은 상대방하고 의견교환하기 위해서 필요하다고 생각하면 쉬움.
대부분의 경우 혼용해서 사용하기도 하지만, (이해안되면 그냥 주소구나 생각하고 넘어가는게 ..정신건강에 좋더라고.) 
특정 상황에서는 문제소지가 될수 있지. 
문서화 및 협업, api설계, 보안 및 규격준수 등등.