기록

[GPT가 알려주는] API (Application Programming Interface) 란? 본문

잡동사니/GPT가 알려주는

[GPT가 알려주는] API (Application Programming Interface) 란?

heylo 2025. 9. 12. 10:13

API란?

API (Application Programming Interface)
**“소프트웨어끼리 서로 대화할 수 있게 해주는 약속된 규칙/인터페이스”**입니다.

쉽게 말해서,

  • Application = 프로그램, 앱
  • Programming = 프로그래밍 방식으로
  • Interface = 연결 통로

→ 즉, 한 프로그램이 다른 프로그램이나 시스템의 기능을 쓸 수 있도록 정해진 방법을 의미합니다.


비유로 설명

  • 식당에서 손님(앱)이 요리를 시키려면 주방(시스템 내부)에 직접 들어갈 수는 없죠.
  • 대신 메뉴판(API)을 보고 주문하면, 주방은 정해진 절차대로 음식을 만들어 줍니다.
  • 손님은 요리가 어떻게 만들어지는지는 몰라도 되고, 메뉴판에 적힌 대로만 요청하면 됩니다.

실제 예시

  1. 네이버 지도 API
    → 내 앱에서 “지도”를 직접 구현할 필요 없이, 네이버가 제공하는 API를 호출하면 지도 데이터를 가져올 수 있습니다.
  2. Spring JPA의 Repository API
    → SQL을 직접 작성하지 않아도, save(), findAll() 같은 API 메서드 호출만으로 DB 작업을 할 수 있습니다.
  3. REST API
    → URL과 HTTP 메서드(GET/POST/PUT/DELETE)를 사용해 다른 서버의 기능을 호출합니다.
    예: GET https://api.weather.com/today → 오늘 날씨 정보 반환.

👉 정리하면,
**API는 “개발자가 다른 소프트웨어나 시스템의 기능을 쉽게 사용할 수 있도록 미리 약속된 명령어/함수/주소 모음”**이에요.


혹시 “API”를 일반 개념으로 알고 싶은 건지, 아니면 Spring Boot에서 REST API 같은 구체적인 맥락으로 알고 싶은 건가요?

 

좋습니다 👍 API라는 개념을 일반적인 의미Spring Boot에서 REST API 맥락, 두 가지로 나눠서 정리해 드릴게요.


1. API 일반 개념

정의

  • API (Application Programming Interface)
    : 소프트웨어끼리 서로 기능을 주고받기 위해 약속해 놓은 인터페이스(규칙).
  • 개발자는 API를 사용함으로써 내부 구조나 복잡한 동작 원리를 몰라도, 필요한 기능을 호출해서 쓸 수 있습니다.

특징

  • 표준화된 호출 방식: 함수 이름, 매개변수, 응답 형식이 정해져 있음.
  • 재사용성: 이미 만들어진 기능을 그대로 가져다 쓰는 것.
  • 추상화: 내부 동작은 숨기고, 인터페이스만 제공.

예시

  • OS API: fopen(), read() → 파일 열기/읽기 기능
  • 라이브러리 API: OpenCV의 cv::imread() → 이미지 로딩
  • 웹 API: 카카오 지도 API → 지도 데이터를 내 앱에서 활용 가능

2. Spring Boot에서의 REST API

Spring Boot는 웹 API를 쉽게 만들 수 있는 프레임워크예요. 보통 REST 방식을 사용합니다.

REST API란?

  • REST (Representational State Transfer): 웹 자원을 URL로 표현하고, HTTP 메서드(GET, POST, PUT, DELETE)로 자원을 조작하는 아키텍처 스타일.
  • 간단히 말해, **“주소와 메서드 규칙만 지키면 누구나 요청/응답으로 데이터를 주고받을 수 있다”**는 약속.

Spring Boot에서 REST API 구현 예시

@RestController
@RequestMapping("/api/members")
public class MemberController {

    private final MemberRepository repository;

    public MemberController(MemberRepository repository) {
        this.repository = repository;
    }

    // 회원 목록 조회 (GET /api/members)
    @GetMapping
    public List<Member> getMembers() {
        return repository.findAll();
    }

    // 회원 등록 (POST /api/members)
    @PostMapping
    public Member createMember(@RequestBody Member member) {
        return repository.save(member);
    }

    // 회원 단건 조회 (GET /api/members/{id})
    @GetMapping("/{id}")
    public Member getMember(@PathVariable Long id) {
        return repository.findById(id).orElseThrow();
    }

    // 회원 삭제 (DELETE /api/members/{id})
    @DeleteMapping("/{id}")
    public void deleteMember(@PathVariable Long id) {
        repository.deleteById(id);
    }
}

요청/응답 흐름

  • 클라이언트 요청
    예: GET http://localhost:8080/api/members
  • Spring Boot Controller가 해당 요청을 처리
  • Repository/JPA를 통해 DB와 연결
  • JSON 응답 반환
  • [ {"id":1,"name":"Alice"}, {"id":2,"name":"Bob"} ]

📌 정리

  • 일반 API = 소프트웨어 기능을 외부에서 쉽게 호출할 수 있도록 한 규칙/명령 집합.
  • Spring Boot REST API = 웹 기반으로 데이터를 주고받을 수 있게 만든 API. URL, HTTP 메서드, JSON 응답을 통해 외부 서비스/클라이언트가 내 서버 기능을 이용할 수 있음.

👉 혹시 원하시는 게, API 개념 → REST API 개념 → 직접 만들어보기 실습 순서로 단계별 공부 가이드일까요, 아니면 이론 설명까지만 필요하신 걸까요?

 

좋습니다 👍 그러면 “API → REST API → 직접 만들어보기 실습” 순서로 단계별 공부 가이드를 정리해 드릴게요.


1단계. API 기본 이해

핵심 개념

  • API = “소프트웨어 간 대화 규칙”
  • 내부 구조를 몰라도 정해진 함수 / 메서드 / URL / 응답 형식을 따라 호출하면 원하는 기능을 쓸 수 있음.

간단 실습 (자바 기본 예제)

// Math 클래스의 API 사용
public class ApiBasic {
    public static void main(String[] args) {
        double result = Math.sqrt(16); // 제곱근 API
        System.out.println(result);    // 4.0 출력
    }
}

👉 Math.sqrt()도 자바 표준 API예요. 우리는 “숫자 16의 제곱근 구해줘”만 말하고, 내부 연산 방식은 몰라도 됩니다.


2단계. REST API 이해

개념

  • REST API = 웹에서 자원을 URL로 표현하고, HTTP 메서드로 조작하는 규칙
    • GET /users → 사용자 목록 가져오기
    • POST /users → 사용자 추가
    • PUT /users/1 → 사용자 수정
    • DELETE /users/1 → 사용자 삭제

👉 즉, 웹 브라우저/앱/서버가 서로 통신할 때 쓰는 API의 한 형태.


3단계. Spring Boot에서 REST API 직접 만들어보기

프로젝트 준비

  • spring-boot-starter-web
  • spring-boot-starter-data-jpa
  • H2 DB 추가

build.gradle:

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    runtimeOnly 'com.h2database:h2'
}

엔티티 정의

import jakarta.persistence.*;

@Entity
public class Member {
    @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;

    // getter/setter
}

Repository 정의

import org.springframework.data.jpa.repository.JpaRepository;

public interface MemberRepository extends JpaRepository<Member, Long> {}

Controller 작성

import org.springframework.web.bind.annotation.*;
import java.util.List;

@RestController
@RequestMapping("/api/members")
public class MemberController {

    private final MemberRepository repository;

    public MemberController(MemberRepository repository) {
        this.repository = repository;
    }

    @GetMapping
    public List<Member> getAll() {
        return repository.findAll();
    }

    @PostMapping
    public Member add(@RequestBody Member member) {
        return repository.save(member);
    }
}

4단계. 실행하고 호출해보기

앱 실행 후, 브라우저나 Postman / curl에서 호출:

# 회원 추가
curl -X POST http://localhost:8080/api/members \
  -H "Content-Type: application/json" \
  -d '{"name":"Alice"}'

# 회원 조회
curl http://localhost:8080/api/members

👉 결과(JSON):

[
  {"id":1, "name":"Alice"}
]

5단계. 확장 아이디어

  • GET /api/members/{id} → 단건 조회
  • DELETE /api/members/{id} → 삭제
  • PUT /api/members/{id} → 수정
  • Swagger 같은 API 문서 자동화 도구 적용

✅ 이렇게 하면 API 개념 → REST API 규칙 → 직접 API 만들어보기까지 한 흐름을 체험할 수 있습니다.

원하시면 제가 위 예제를 단계별 실습 미션(1단계 코드 따라치기 → 2단계 DB 연동 → 3단계 API 테스트) 식으로 나눠드릴까요?