[공부] Restful API 개발 방법 (1)
안녕하세요 패일오버입니다.
SAP BC업무가 주를 이루고 있지만 간간히 기술관련하여 공부하고 있습니다. 개발은 대학생 때 과제 정도해보고 회사 생활하며 CS 프로그램을 개발해 본 것이 다 이기에 굉장히 기초적인 것도 잘 모르네요.
그래도 코드를 보면 감을 잡을 수 있기 때문에 어느정도 축복이라고 생각하고 개발에 대해서도 간간히 포스팅 하겠습니다.
RESTful API 는 시스템간 정보를 교환하는데 단순한 방법을 제시합니다. 약속된 HTTP 프로토콜을 통해 동작하는 REST 아키텍쳐위에 설계된 API라고 간단하게 정의 하겠습니다.
이 기종 시스템과의 인터페이스를 효과적으로 할 수 있는 방법을 제시하고 개발환경에 구애 받지 않는 아주 효율적인 녀석입니다. SAP 이야기를 잠깐 하자면 Integration Suite이라는 EAI 툴이 있는데 핵심 기능중에 하나가 API Management 입니다.
restful api에 대한 method (GET, POST, PUT, DELETE) 나 REST API 의 구성요소 (Resource, Verb, Representation of Resource) 에 대한 개념 등은 굳이 포스팅 하지 않겠습니다. (구글에 간단히만 검색해도 아주 많은 좋은 설명이 있기 때문입니다.)
다만 어떤 단계를 거쳐서 개발을 진행하게 되는지 또한 hello world라도 찍어 볼 수 있는 예제 코드라도 보면서 감을 잡고자 합니다.
개발단계 정리
- Endpoint 및 Method 정의: 데이터 검색, 데이터 업데이트 또는 데이터 삭제(CRUD)와 같이 API가 제공할 특정 기능을 결정하고 끝점 및 HTTP 메서드(예: GET, POST, PUT 및 DELETE)를 정의하는 작업이 포함됩니다.
- 프로그래밍 언어 및 프레임워크 선택: API를 개발하려면 프로그래밍 언어와 프레임워크를 선택해야 합니다. 인기 있는 선택에는 Java, Python, Ruby 및 Node.js가 있습니다.
- API의 아키텍처 설계: API가 들어오는 요청, 액세스 데이터 및 반환 응답을 처리하는 방법을 결정하는 작업이 포함됩니다. 또한 보안, 확장성 및 성능 요구 사항을 고려합니다.
- Data Model 정의: 각 리소스에 대한 필드 및 데이터 유형을 포함하여 API가 작업할 데이터의 구조를 정의해야 합니다.
- Coding : 들어오는 요청 처리, 데이터 액세스, 필요한 논리 수행 및 응답 반환을 포함하여 API용 코드 작성이 포함됩니다.
- API 테스트: API가 올바르게 작동하고 예상 결과를 반환하는지 확인하려면 API를 테스트해야 합니다. 여기에는 테스트 사례 작성, 테스트 스크립트 또는 테스트 프레임워크 사용이 포함될 수 있습니다.
- API 문서화: 엔드포인트, 메서드, 데이터 모델 및 오류 코드에 대한 정보를 포함하여 API에 대한 문서 제공이 포함됩니다. 이 문서는 API를 사용할 개발자가 쉽게 이해하고 액세스할 수 있어야 합니다.
- API 배포: 마지막으로 클라이언트 애플리케이션에서 액세스할 수 있도록 서버 또는 클라우드 환경에 API를 배포해야 합니다.
REST API의 개발은 반복적인 프로세스이며 개발 프로세스를 진행하면서 일부 단계를 반복해야 할 수도 있습니다. 예를 들어 API를 여러 번 테스트하고 테스트 결과에 따라 코드를 변경해야 할 수 있습니다. 또한 데이터 모델에 대한 변경 사항을 처리하는 방법과 새로운 기능이 필요할 때 API를 업데이트하는 방법을 포함하여 시간이 지남에 따라 API를 유지 관리하는 방법을 고려해야 할 수 있습니다.
SAMPLE 코드 (Spring Boot 기반)
package aaa.bbb.cccc;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@SpringBootApplication
@RestController
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
@GetMapping("/hello")
public String hello() {
return "Hello, World!";
}
}
이 코드는 "/hello" URL에 단일 REST 엔드포인트가 있는 Spring Boot 애플리케이션을 정의합니다. HTTP GET 요청을 사용하여 끝점에 액세스하면 간단한 문자열 메시지 "Hello, World!"를 반환하는 코드 입니다. 정말 간단합니다.
당연히 해당 예제는 정말 초보적 이고 간단합니다. 화려한 코드를 구사할 줄 아는 능력도 중요하지만 실제로 어떻게 돌아가는지를 파악하고 이해하는 것이 TA의 덕목이라고 생각이 드네요.
다음에 또 뵙겠습니다~
