기록
[GPT가 알려주는] API (Application Programming Interface) 란? 본문
API란?
API (Application Programming Interface) 는
**“소프트웨어끼리 서로 대화할 수 있게 해주는 약속된 규칙/인터페이스”**입니다.
쉽게 말해서,
- Application = 프로그램, 앱
- Programming = 프로그래밍 방식으로
- Interface = 연결 통로
→ 즉, 한 프로그램이 다른 프로그램이나 시스템의 기능을 쓸 수 있도록 정해진 방법을 의미합니다.
비유로 설명
- 식당에서 손님(앱)이 요리를 시키려면 주방(시스템 내부)에 직접 들어갈 수는 없죠.
- 대신 메뉴판(API)을 보고 주문하면, 주방은 정해진 절차대로 음식을 만들어 줍니다.
- 손님은 요리가 어떻게 만들어지는지는 몰라도 되고, 메뉴판에 적힌 대로만 요청하면 됩니다.
실제 예시
- 네이버 지도 API
→ 내 앱에서 “지도”를 직접 구현할 필요 없이, 네이버가 제공하는 API를 호출하면 지도 데이터를 가져올 수 있습니다. - Spring JPA의 Repository API
→ SQL을 직접 작성하지 않아도, save(), findAll() 같은 API 메서드 호출만으로 DB 작업을 할 수 있습니다. - 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 테스트) 식으로 나눠드릴까요?
'잡동사니 > GPT가 알려주는' 카테고리의 다른 글
| [GPT가 알려주는] EC (Echo Cancellation), NS (Noise Suppression), Beamformer (빔포머, 마이크 배열 지향성 처리) (0) | 2025.09.12 |
|---|---|
| [GPT가 알려주는] 포팅이란? (0) | 2025.09.12 |
| [GPT가 알려주는] EVB (개발용 보드) 란? (0) | 2025.09.12 |
| [GPT가 알려주는] Vendor Dependent | Bluetooth Music Player (AVRCP, MediaSession) (0) | 2025.09.11 |
| [GPT가 알려주는] 인셋(insets)이란? (0) | 2025.09.08 |