TIL - API

kyoungyeon·2024년 3월 25일
0

TIL

목록 보기
107/122

status

언젠가 api는 꼭 써야지
하다가 안쓰고 놀다가
몸살감기 걸렸다. 와! 장장 18시간을 잤는데 안낫네..

원인은 물론 회사인걸로^^

apicall

API

preface

인터페이스 영역이기도 하고, 개념 자체가 그냥 json 파일 가져다 쓰는거 아닌가?라는
막연한 생각만 들었을 뿐.
python 으로 빅데이터 분석 프로젝트를 할 때
크롤러가 막혀서 안되거나 권한이 없어서 고생을 했었다.

js 배우다가 Restful API로 새롭게 다가오게 되면서
직접 back- front 간에 dummy data를 주고받으면서
little bit 이해되기 시작했다.
게다가 sql 공부하면서 덤으로 같이 이해하게 됌^^

개발자는 아니지만
필드에서 EDR, SIEM, syslog등을 만지다보니
접근성과 호출에 있어서 꽤 매력적인 도구가 될거라는 생각이 들기시작했다.
at backend > API ! <to frontend

waiter == API라고 보면 됀다

API key

  • 인증, 인가에 자주 쓰인다 ( 보안 layer 를 추가해줌)
  • 모든 api 가 키를 갖고있진 않다.

authorized user

보통은 관리 업체에다가 문의해서 허가를 받아야 접근이 가능한 모양.

REST APIs

  • 프로토콜 http
  • 애플리케이션 통신을 통해 전달받는 상태 비저장 서비스
  • GET PUT POST DELETE (HTTP)
  • READ UPDATE CREATE DROP ( SQL)

SOAP API

  • 프로토콜 SOAP

  • xml 이용한 데이터 인코딩

    • 연구소 근무할때 싸수님께 soap이 뭐예요 물어봤다가
      이딴건 몰라도돼.. 라고 한소리 들은 기억이😜
    • 그대가 틀렸어요. 저희 data parsing xml 쓰거든요...
  • 엔터프라이즈 시스템에서 자주 사용. 더 많은 기능 제공

    GRAPHQL API

  • API 쿼리 언어 및 기존 쿼리 수행하기 위한 runtime

  • runtime : 실행되고 있는 동안의 "동작" 의 개념

  • restful api 와 유사한 http 사용

  • 각 req의 payload(body)에 text 데이터 전송.

  • 서버에서 데이터 쿼리 X

    • clientserver 이 원격 서버에서 데이터를 요청하는 방식을 정의한다고 함.
    • 속도와 서버 관리측면에서 꽤 유용함이 보였다
    • 현재 진행하는 redis와 같이 쓸 수 없을까? 있다!
      • 참고로 redis db 를 관리하는 middleware이다.
  • 예시 : 본인의 이름으로 게시글을 작성해 보세요.
    연습

 # input
 mutation {
  createBoard(
    writer: "Chungsik"
    password: "1234"
    title: "This is a title."
    contents: "These are contents."
  ) {
    message
    number
  }
}
#output
{
  "data": {
    "createBoard": {
      "message": "게시물이 정상적으로 등록되었습니다.",
      "number": 71
    }
  }
}

Webhooks and Event-driven APIs

  • web socket 이다..!
  • event 기반으로 api를 호출한다 / 웹 개발에서 많이 보던 것들
    • webhook의 경우 새주문 접수시 client 서버에 알린다
  • 발생 이벤트를 체크해줌.
  • client <-> server 간 양방향 통신 callback 메시지 보낼수 있음
  • polling 없이 서버에 메시지 보내고 event-driven reply 받을수있음
    참조
    참조2

    그외

  • RCP[remote procedure call] API : 원격으로 프로시저를 다른 서버에서 실행하게 한 후 local에서 돌아간것 처럼 코딩된다고 함. xml , json response.
    이런것도 있다고 한다.

API CALL 코드 종류

  • curl + crontab
    curl -i http://localhost:8080/api/users
  • python
import requests
api_url = "https://localhost:8080/api/users"
response = requests.get(api_url)
response.json()

# output
{'userId': 1, 'id': 1, 'title': 'delectus aut autem', 'completed': False}
  • API tools ( PostMAN) 주로 3개가 예시로 잘 나옴.

참조할만한 자료

naverAPI
kakaoAPI

  • log를 생성하거나 자료를 만드는 업체 대부분이 api 문서는 존재하긴 하는데
  • 정보 유출이 걱정될때는 오픈을 안하는 경우도 있다고 한다 (보안 업체등의 경우)
profile
🏠TECH & GOSSIP

0개의 댓글