IT story

json 매개 변수로 컬 GET 요청

hot-time 2020. 8. 6. 07:52
반응형

json 매개 변수로 컬 GET 요청


다음과 같이 cURL을 통해 "GET"요청을 명령 프롬프트에서 원격 REST API로 보내려고합니다.

curl -X GET -H "Content-type: application/json" -H "Accept: application/json"  "http://server:5050/a/c/getName/{"param0":"pradeep"}"

그러나 출력을 반환하지 않습니다. 브라우저에서 URL을 직접 핑하려고 시도했지만 응답을 얻을 수 있으며 명령에 어떤 문제가 있는지 이해할 수 없습니다.

기본적으로 json 데이터를 curl을 통해 응답으로 제공하는 원격 REST 서비스에 "GET"요청을 설정하려고합니다. 아무도 내가 뭘 잘못하고 있는지 안내해 줄 수 있습니까? 나는 다양한 게시물을 시도했지만 모두 GET이 아닌 POST 요청에 대해 이야기합니다.


이것은 작동해야합니다 :

  curl -i -H "Accept: application/json" "server:5050/a/c/getName{'param0':'pradeep'}" 

x 대신 옵션 -i를 사용하십시오.


본문 내에서 데이터를 보내려면 POST또는 PUT대신 을 만들어야합니다 GET.

당신이 보내려고하는 것처럼 저를 위해, 그것은 본다 URI 매개 변수 쿼리를 관련이 없습니다, GET당신은 또한 이러한 매개 변수를 넣을 수 있습니다 POST, PUT등등을.

쿼리는 본질적으로 계층 적이 지 않은 추가 식별 정보를 포함하는 물음표 ( "?")로 구분 된 선택적 부분입니다. 쿼리 문자열 구문은 일반적으로 정의되지 않지만 세미콜론 또는 앰퍼샌드로 구분 된 쌍으로 = 쌍의 시퀀스로 구성됩니다.

예를 들면 다음과 같습니다.

curl http://server:5050/a/c/getName?param0=foo&param1=bar

GET은 이름 값 쌍을 사용합니다.

다음과 같은 것을 시도하십시오 :

curl http://server:5050/a/c/getName/?param1=pradeep

또는

curl http://server:5050/a/c/getName?param1=pradeep

일반 REST는 다음과 같아야합니다.

curl http://server:5050/a/c/getName/pradeep GET URL에서 JSON을 사용하는 경우 표준 방법이 아닙니다.


사용자 이름 및 비밀번호로 보호 된 서비스의 경우 다음을 사용하십시오.

curl -u admin:password -X GET http://172.16.2.125:9200 -d '{"sort":[{"lastUpdateTime":{"order":"desc"}}]}'

시험

curl -G ...

대신에

curl -X GET ...

일반적으로이 옵션은 필요하지 않습니다. 모든 종류의 GET, HEAD, POST 및 PUT 요청은 전용 명령 줄 옵션을 사용하여 호출됩니다.

이 옵션은 HTTP 요청에 사용 된 실제 단어 만 변경하고 curl 동작 방식은 변경하지 않습니다. 예를 들어 적절한 HEAD 요청을하려면 -X HEAD를 사용하면 충분하지 않습니다. -I, --head 옵션을 사용해야합니다.


본문에서 JSON으로 GET 요청을 제출하려면 다음을 수행하십시오.

curl -X GET \
  -H "Content-type: application/json" \
  -H "Accept: application/json" \
  -d '{"param0":"pradeep"}' \
  "http://server:5050/a/c/getName"

대부분의 최신 웹 서버는이 유형의 요청을 수락합니다.


어떤 이유로 든 위에서 언급 한 해결책 중 어느 것도 나를 위해 일하지 않았습니다. 여기 내 해결책이 있습니다. 꽤 기본적입니다.

curl -X GET API_ENDPOINT -H '콘텐츠 유형 : application / json' - d ' JSON_DATA '

API_ENDPOINT is your api endpoint e.g: http://127.0.0.1:80/api

-H has been used to added header content.

JSON_DATA is your request body it can be something like :: {"data_key": "value"} . ' ' surrounding JSON_DATA are important.

Anything after -d is the data which you need to send in the GET request

참고URL : https://stackoverflow.com/questions/21326397/curl-get-request-with-json-parameter

반응형