본문 바로가기

LINUX-ubuntu

[LINUX] curl 명령으로 RESTful API 테스트 호출하는 Shell 프로그램 개발하기

이 가이드는 초보 Shell 스크립트 개발자를 대상으로 하며, aws-test-curl.sh 프로그램을 분석하고 이를 기반으로 Bash Shell 스크립트를 개발하는 방법을 설명합니다.

aws-test-curl.sh
0.00MB


1. Shell 스크립트 개요

1.1 Shell 스크립트란?

Shell 스크립트는 명령어를 순차적으로 실행하는 스크립트 언어로, Linux/Unix 환경에서 자동화 및 시스템 관리 목적으로 사용됩니다.

(그림) aws-test-curl.sh  쉘 프로그램 사용 예

1.2 실행 환경

본 가이드에서 다룰 Shell 스크립트는 Ubuntu Linux 환경에서 실행되며, Bash Shell(#!/bin/bash)을 사용합니다.


2. aws-test-curl.sh 개요

이 스크립트는 AWS에 배포된 RESTful API를 테스트하는 프로그램으로, 다음과 같은 주요 기능을 포함합니다.

  • POST: 새로운 데이터를 입력
  • PUT: 기존 데이터를 수정
  • DELETE: 데이터를 삭제
  • GET: 데이터를 조회

2.1 사용자 입력

스크립트 실행 시, 사용자로부터 서버 IP 주소, 수정할 KeyNo, 그리고 입력/수정할 Value 값을 입력받습니다.

echo "> 서버IP를 입력하세요:"
read ipaddr
echo "> 수정할 KeyNo를 입력하세요:"
read keyno
echo "> 입력/수정 Value를 입력하세요:"
read value

입력된 정보는 이후 RESTful API 호출 시 사용됩니다.


3. RESTful API 호출 기능 구현

3.1 curl을 이용한 API 호출

스크립트는 curl 명령어를 활용하여 RESTful API를 호출합니다. curl은 HTTP 요청을 수행할 수 있는 명령어로, 다양한 API 테스트 및 서버와의 통신을 자동화할 수 있습니다.

3.2 API 요청 상세

(1) POST 요청 - 데이터 입력

curl -X POST -H "Content-Type: application/json" \
     -d "{ \"value\" : \"$value\" }" http://$ipaddr:8080/api/data \
     | awk '{print ">>>[RES]:", $0; sub(/,/, "", $5);} END { print $5 > "d_keyno.txt"}'
  • -X POST : POST 요청을 전송
  • -H "Content-Type: application/json" : 요청의 데이터 형식을 JSON으로 지정
  • -d "{ \"value\" : \"$value\" }" : JSON 데이터를 전송
  • awk를 활용하여 응답 데이터를 처리하고 d_keyno.txt에 저장

(2) PUT 요청 - 데이터 수정

curl -X PUT -H "Content-Type: application/json" \
     -d "{ \"value\" : \"$value\" }" http://$ipaddr:8080/api/data/$keyno \
     | awk '{print ">>>[RES]:", $0}'

(3) DELETE 요청 - 데이터 삭제

D_KEYNO=$(cat d_keyno.txt)
curl -X DELETE -H "Content-Type: application/json" \
     -d "{ \"value\" : \"$value\" }" http://$ipaddr:8080/api/data/$D_KEYNO \
     | awk '{print ">>>[RES]:", $0}'

(4) GET 요청 - 데이터 조회

curl -X GET http://$ipaddr:8080/api/data/0 \
     | awk '{print ">>>[RES]:", $0}'

4. 실행 방법

4.1 스크립트 실행 권한 부여

스크립트를 실행하기 전에 실행 권한을 부여해야 합니다.

chmod +x aws-test-curl.sh

4.2 스크립트 실행

./aws-test-curl.sh

스크립트 실행 후, 서버 IP, KeyNo, Value 값을 입력하면 API 테스트가 수행됩니다.


5. 추가 학습

5.1 curl 명령어

  • curl(Client URL)은 다양한 프로토콜(HTTP, HTTPS, FTP, SCP, SFTP, LDAP 등)을 지원하는 데이터 전송 명령어로, 네트워크에서 데이터를 가져오거나 전송하는 데 사용됩니다.
  • curl의 주요 용도
1) 웹 페이지 또는 파일 다운로드
curl -O https://example.com/file.zip

2) RESTful API 호출 (GET, POST, PUT, DELETE 요청)
curl -X GET http://example.com/api/data

3) FTP 서버에서 파일 업로드/다운로드
curl -T localfile.txt ftp://ftp.example.com --user user:password

4)네트워크 테스트 (응답 확인, 헤더 검사)
curl -I https://example.com

5.2 awk 명령어

  • awk는 텍스트 처리 및 데이터 분석을 위한 스크립트 언어로, 주로 파일이나 명령어 출력에서 특정 패턴을 찾고 조작하는 데 사용됩니다. 문자열 조작 및 데이터 처리에 유용하며, 응답 데이터를 가공하여 필요한 부분만 출력 가능 합니다.
  • 간단한 사용 예시
    아래 awk 명령은 필드 기반 데이터 추출 예로, "Alice Developer"가 출력 됩니다.
    echo "Alice 25 Developer" | awk '{print $1, $3}'

5.3 Bash 스크립트 문법

  • 변수 사용 ($변수명)
  • 사용자 입력 (read 명령어)
  • 파일 입출력 (>, cat 명령어 활용)

6. 결론

이 가이드를 통해 초보 Shell 개발자가 RESTful API 테스트 스크립트를 작성하는 방법을 익힐 수 있습니다. curl을 활용한 API 호출, awk를 통한 데이터 가공 등의 개념을 배우고, 실전에서 활용할 수 있도록 연습해보세요!