# Table of Contents

# MIME type

MIME Type인터넷에서 전달되는 데이터의 타입을 알려주는 식별자Media type이라고도 한다. 모든 타입은 이 곳 (opens new window)에서 확인할 수 있으며, 자주 사용하는 타입은 다음과 같다.

  • text/plain: 기본 문자열
  • application/json: JSON 형식의 데이터
  • application/x-www-form-urlencoded: HTML의 <form> 태그
  • multipart/form-data: 이미지와 문자열처럼 두 종류 이상의 데이터 함께 전송할 때 사용. 주로 파일 업로드에 사용.
  • image/png: PNG 이미지 파일
  • video/mpeg: mpeg 동영상 파일

# cURL 사용법 정리

다음과 같이 응답하는 스프링부트 API 서버가 있다고 가정하자.

# GET 요청

-X GET 옵션으로 HTTP GET 요청을 보낼 수 있으며, -G 뒤에 URL을 명시한다.

$ curl -X GET -G 'http://localhost:8080'
Hello World

Query Parameter는 두 가지 방법으로 전달할 수 있다.

$ curl -X GET -G 'http://localhost:8080?name=paul&age=35'
$ curl -X GET -G 'http://localhost:8080' \
-d 'name=paul' \
-d 'age=35'

Path Variable은 다음과 같은 방법으로 전달할 수 있다.

$ curl -X GET -G 'http://localhost:8080/post/1'

# POST 요청

-X POST 옵션으로 HTTP POST 요청을 보낼 수 있다.

$ curl -X POST -G 'http://localhost:8080'

-d 또는 --data 옵션으로 JSON 데이터를 전송할 수도 있다.

$ curl -X POST -G 'http://localhost:8080' \
-H 'Content-Type: application/json' \
-d '{"name": "paul", "age": "35"}'

# PUT 요청

$ curl -X PUT -G 'http://localhost:8080'

# PATCH 요청

$ curl -X PATCH -G 'http://localhost:8080'

# DELETE 요청

$ curl -X DELETE -G 'http://localhost:8080'

# 상세 보기

-i, --include 옵션은 응답의 데이터와 헤더를 모두 보여준다.

$ curl -i -G 'http://localhost:8080'
HTTP/1.1 200 
Content-Type: text/plain;charset=UTF-8
Content-Length: 11
Date: Mon, 09 May 2022 12:41:19 GMT

Hello World

대문자 -I 옵션은 응답의 헤더만을 보여준다.

$ curl -I -G 'http://localhost:8080'
HTTP/1.1 200 
Content-Type: text/plain;charset=UTF-8
Content-Length: 11
Date: Mon, 09 May 2022 13:22:28 GMT

-v, --verbose 옵션은 요청과 응답 모두와 통신 과정을 상세하게 보여준다.

$ curl -v -G 'localhost:8080'
*   Trying 127.0.0.1:8080...
* Connected to localhost (127.0.0.1) port 8080 (#0)
> GET / HTTP/1.1
> Host: localhost:8080
> User-Agent: curl/7.79.1
> Accept: */*
> 
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 
< Content-Type: text/plain;charset=UTF-8
< Content-Length: 11
< Date: Mon, 09 May 2022 12:34:07 GMT
< 
* Connection #0 to host localhost left intact
Hello World                                      

# Header 추가

-H 또는 --header 옵션으로 요청 헤더를 추가할 수 있다.

$ curl -G 'http://localhost:8080' \
-H 'Content-Type: application/json'

여러 개의 헤더를 추가할 수도 있다.

$ curl -G 'http://localhost:8080' \
-H 'Content-Type: application/json' \
-H 'Content-Length: 0'