본 글에서는 'curl'이라는 툴을 통해, rest api를 테스트 해보겠습니다.
이전 글을 보면, springboot로 개발 후 rest api 테스트를 위해서 swagger나 Postman같은 UI 툴을 사용했었습니다.
spring RestAPI 어노테이션 정리
Spring에서 RestAPI를 사용할때 자주 쓰고, 헷갈리는 어노테이션들을 정리하였습니다. 1. @Controller, @RestController, @ResponseBody @Controller는 웹 요청을 수신하는 클래스이며, @Component 어노테이션을 포함하
dnl1029.tistory.com
물론 Swagger는 springdoc 의존성 주입만 하면 바로 인터넷창을 띄워서 restapi를 테스트를 해볼 수 있고, Postman과 Insomnia같은 restapi를 날릴수 있는 UI 툴은 쉽게 다운받아, 손쉽게 사용할 수 있어서 평소에 자주 사용하고 있습니다. 다만, 업무 협업을 하다보면 재현테스트를 위해 restapi 요청 url이라던지, 파라미터나 @RequestBody에 들어가있는 정보 등등을 전달해야 할 때가 있는데, 이 때 Postman과 같은 툴의 캡쳐화면을 보내기에는 전달과정에서 데이터가 잘못 입력될 수도 있고, 재현이 안될때가 있습니다. 또한 상대방이 나와 OS가 다를경우에도 restapi를 재현테스트가 가능하도록 전달하는 방법이 필요합니다. Linux와 Window 구분없이 재현테스트 가능한 curl을 이때 사용합니다.
cmd 혹은 shell창에서 curl을 통해 http 요청문을 보내기만 하면 바로 restapi 요청을 보낼수 있습니다. 별도로 설치가 필요 없습니다. 이제 restapi 테스트가 가능한 사이트를 찾아 바로 테스트를 해보겠습니다.(https://reqres.in/)
예시) get 요청
target : https://reqres.in/api/users?page=2
curl 명령어 : curl -X GET -i https://reqres.in/api/users?page=2
캡쳐와 같이, 바로 response가 오는것을 알 수 있습니다.
주요 명령어를 정리해보면 아래와 같습니다.
1. -X : http 메서드를 지정하기
ex) -X GET http://...
-X POST http://...
2. -i : response 메시지의 http header 정보도 포함하도록 용도
3. -H : 헤더값을 지정하고, 헤더값은 따옴표 처리를합니다.
ex) curl -X GET -i https://reqres.in/api/users?page=2 -H "key:123"
4. -d : request body값을 지정합니다. json 방식으로 보낼때는 url 뒤에 헤더로 json 타입을 명시합니다.
다소 복잡해보이지만, 재현테스트가 되는 curl 명령어를 전달하는 것이 가장 확실하게 restapi 정보를 넘겨주는 것이라 생각됩니다.
curl -X POST -i https://reqres.in/api/register -H "Content-Type:application/json" -d "{\"email\":\"eve.holt@reqres.in\",\"password\":\"pistol\"}"
참고) curl -help all을 하면 도움말을 확인할 수 있습니다.
댓글