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 | 데이터 삭제 | 특정 유저나 리소스 제거 |
'Linux' 카테고리의 다른 글
| [ Linux ] curl GET 요청 시 URL 인코딩이 꼭 필요한 이유와 처리 방법 (0) | 2025.06.13 |
|---|---|
| [ Linux ] 사용자 입력 값을 RFC 2822 형식으로 변환하는 방법 - Shell script (0) | 2025.06.13 |
| [ Linux ] 리눅스에서 API 호출을 할 때 curl이 거의 표준처럼 사용되는 이유 (1) | 2025.06.13 |
| [ Linux ] man 명령어 - 섹션, 검색, 키워드 활용법 (2) | 2025.06.02 |
| [ Linux ] 명령어 설명 보는 법 – --help vs man (0) | 2025.06.02 |