Linux

[ Linux ] curl로 REST API 호출하는 방법

soyali 2025. 6. 13. 12:25

curl을 활용해 REST API의 대표적인 HTTP 메서드(GET, POST, PUT, DELETE, PATCH)를 사용하는 방법을 정리해보겠습니다.

 

 

curl 기본 구조

curl -X <HTTP_METHOD> <URL> [옵션들]

-X는 사용할 HTTP 메서드를 지정하는 옵션입니다. 그 외에도 -H(헤더), -d(데이터), -i(응답 헤더 포함) 등의 옵션이 자주 사용됩니다.

 

 

1. GET – 데이터 조회 (기본 방식)

curl https://api.example.com/users

혹은 명시적으로:

curl -X GET https://api.example.com/users
  • curl 기본값이 GET이기 때문에 -X GET 생략 가능 합니다.
  • 요청 본문(body) 없습니다.
  • 파라미터는 URL에 붙임: ?key=value

파라미터 예시 :

curl "https://api.example.com/users?name=soyali"

 

 

2. POST – 데이터 생성

curl -X POST https://api.example.com/users \
   -H "Content-Type: application/json" \
   -d '{"name": "soyali", "email": "test@example.com"}'
  • -X POST: POST 메서드 명시해야 합니다.
  • -d: 전송할 데이터 지정 (JSON, 폼 등)
  • -H: Content-Type 헤더 지정 (중요)

 

폼 데이터로 전송할 경우:

curl -X POST https://api.example.com/users \
   -d "name=soyali&email=test@example.com"

 

 

 

3. PUT  – 데이터 전체 수정 

curl -X PUT https://api.example.com/users/soyali \
   -H "Content-Type: application/json" \
   -d '{"name": "soyali2", "email": "newtest@example.com"}'
  • 전체 필드를 수정할 때 사용 합니다.
  • 특정 리소스(ID 등)를 URL에 포함시키는 것이 일반적입니다.

 -X와 -d, -H 조합은 POST와 동일합니다.

 

 

4. PATCH – 데이터 부분 수정 (선택)

curl -X PATCH https://api.example.com/users/soyali \
   -H "Content-Type: application/json" \
   -d '{"email": "test_updated@example.com"}'
  • PUT과 비슷하지만 전체 필드가 아니라 일부만 전송하여 수정합니다.
  • 리소스의 일부분만 수정할 때 사용합니다.

 -X와 -d, -H 조합은 POST와 동일합니다.

 

 

5. DELETE – 데이터 삭제

curl -X DELETE https://api.example.com/users/soyali
  • 대부분의 DELETE 요청은 요청 본문이 없습니다.
  • 주로 URL에 삭제할 리소스의 식별자를 포함하여 사용합니다.
  • 요청을 보낸다고 해서 무조건 삭제되는 것은 아니며, 서버에서 해당 리소스를 허용한 경우에만 삭제됩니다.

 

인증이 필요한 경우

보안이 설정된 API는 Authorization 헤더를 함께 보내야 합니다.


curl -X DELETE https://api.example.com/users/soyali \
   -H "Authorization: Bearer YOUR_TOKEN"
  • Bearer Token은 API 서버에서 사용자를 인증하는 데 사용됩니다.
  • 실제 운영 환경에서는 토큰 없이는 삭제 요청이 거부되기도 합니다.

 

 

 

자주 쓰는 옵션 정리

-X HTTP 메서드 지정 (GET, POST 등)
-H 헤더 추가 (Content-Type, Authorization 등)
-d 전송할 데이터 (JSON 등)
-i 응답 헤더도 함께 출력
-v 디버깅용 verbose 출력
-u 인증 정보 (-u username:password)

 

 

 

curl은 요청 방식만 바꿔주면 거의 모든 REST API 테스트에 대응할 수 있습니다.
중요한 건 메서드마다 사용 목적 전달 방식이 다르다는 점입니다:

  • GET → URL로 파라미터 전송
  • POST/PUT/PATCH → body에 JSON 데이터 전달
  • DELETE → URL만으로 요청 가능

 

 

 

 

마무리 요약표

GET 데이터 조회 유저 목록, 상세 정보 요청
POST 데이터 생성 유저 추가, 글 등록 등
PUT 데이터 전체 수정 유저 정보 전체 덮어쓰기
PATCH 데이터 일부 수정 유저 이메일만 수정
DELETE 데이터 삭제 특정 유저나 리소스 제거