[컴] windows 에서 curl 사용시 주의할 점




cURL download

windows 에서 curl 을 사용할 때 아래에서 download 를 하면 된다.

내 경우는 windows7 64bit 을 사용하고 있어서 아래의 것을 받았다.
  • curl-7.45.0-win64-mingw\

받는 방법에 대해서도 Stack Overflow 에 나와 있다. 받는 부분이 산만하다.


curl 구문에서 따옴표를 주의하자

여하튼 중요한 것은 그것이 아니고, curl 로 나온 예제를 따라한다고 web page 에 있는 명령어를 그대로 복사해서 실행했더니 결과가 제대로 나오지 않았다. 물론 예제는 linux 를 기본으로 설명하고 있었다.

$> curl -X POST -H "Content-Type: application/json" -d '{"username":"user1","password":"user1"}' http://localhost:8080/api-token-auth/

그래서 보니 packet 을 잡아서 보니, "(쌍따옴표) 가 제대로 먹지 않았고, '(따옴표) 도 그대로 들어가 있었다. 그래서 아래처럼 수정했다. 그랬더니 결과가 잘 나왔다.

D:\Program Files\curl\bin>curl -X POST -H "Content-Type: application/json" -d "{\"username\":\"user1\",\"password\":\"user1\"}" http://localhost:8080/api-token-auth/

묶을 때 '(따옴표) 대신에 "(쌍따옴표) 를 쓰고, "(쌍따옴표) 내부의 쌍따옴표는 \ 를 이용한다.

혹시 비슷한 실수를 하는 사람이 있을까 하여 작성 해 놓는다.


"(쌍따옴표) 안에서 '(따옴표) 를 사용하기

아래에서 방법을 찾았다.

\u0027 사용

한가지 방법은 \u0027 를 사용하는 것이다.

'(따옴표) 가 동작하지 않는다.
c:\>curl -X POST -H "Content-Type: application/json" -d "{\"username\":\"user1\",\"password\":\"user1\" \"msg\": \"hello it's good\"}" http://localhost:8080/api-token-auth/

아래처럼 하면 된다.
c:\>curl -X POST -H "Content-Type: application/json" -d "{\"username\":\"user1\",\"password\":\"user1\" \"msg\": \"hello it\u0027s good\"}" http://localhost:8080/api-token-auth/

이경우에 날아가는 packet 에도 그대로 \u0027 로 박혀서 날아간다.


file 을 이용하는 방법

c:\>curl -X POST -H "Content-Type: application/json" -d "{\"username\":\"user1\",\"password\":\"user1\" \"msg\": \"hello it's good\"}" http://localhost:8080/api-token-auth/

아래처럼 사용하면 된다.
c:\>curl -X POST -H "Content-Type: application/json" --data @data.json https://localhost:8080/api-token-auth/

//data.json
"{"username":"user1","password":"user1" "msg": "hello it's good"}"

이 방법은 packet 에도 '(따옴표) 가 찍힌다.



한글 encoding

참고로 한글같은 경우 percentage encoding 을 적용하고 날리면 된다.



댓글 2개: