php cURL 연동 질문

php cURL 연동 질문

QA

php cURL 연동 질문

답변 3

본문

안녕하세요. 특정 api를 연동하려 하는데 php에서 cURL연동을 어떻게 해야 하는지 샘플 코드를 구하고 싶습니다.

api 설명은 아래와 같은데 초기 인증부터 막히고 있습니다...(웹개발 오래했는데 더이상 머리가 안돌아가네요...)

아래 사용방법 내용을 php로 구현하려면 어떻게 해야할까요?

<ENDPOINT URL>, <API KEY> 키는 주어진 값으로 넣는것으로 이해하는데 

--data-raw '<JSON BODY>' <= 예는 무엇을 넣어야 하는지 모르겠습니다.(원하는 보낼 값? 혹은 받는 값인지도 햇갈립니다.)

혹시 cURL 샘플 코드가 있으시다면 공유해주실 수 있을까요?

 

사용 방법

  • HTTP Request Header에 x-api-key 라는 이름으로 값을 전송합니다.

Example. cURL 에서 x-api-key Header

curl --location --request POST '<ENDPOINT URL>' \
--header 'x-api-key: <API KEY>' \
--header 'Content-Type: application/json' \
--data-raw '<JSON BODY>'

 

기본 API Endpoint는 아래와 같으며, 현재 최신 버전은 2022-08 입니다.

https://api.kr.test.ai/2022-08/

 

 

Request example

1) options가 BLOCK_DUPLICATES 이고, metadata가 있는경우 (name, price)

{
    "options": ["BLOCK_DUPLICATES"],
    "products": [
        {
            "id": "A1000",
            "url": "https://image-url.jpg",
            "salesUrl": "https://sales_url.com",
            "testtesttestUrl": "https://m.sales_url.com",
            "detection": "TOP",
            "metadata": {
                "productName": "product name, 상품명",
                "originPrice": 10000,
                "currency": "KRW"
            }
        },
        {
            "id": "A1001",
            "imageUrl": "https://image-url2.jpg",
            "salesUrl": "https://sales_url.com",
            "testtesttestUrl": "https://m.sales_url.com",
            "detection": "WHOLEBODY",
            "metadata": {
                "productName": "product name2, 상품명2",
                "originPrice": 20000,
                "currency": "KRW"
            }
        },
        {
            "id": "A1002",
            "imageUrl": "https://image-url3.jpg",
            "salesUrl": "https://sales_url3.com",
            "mobileSalesUrl": "https://m.sales_url3.com",
            "detection": "PANTS",
            "metadata": {
                "productName": "product name3, 상품명3",
                "originPrice": 30000,
                "currency": "KRW"
            }
        }
    ]
}

이 질문에 댓글 쓰기 :

답변 3

$headers = array();
$headers[] = 'x-api-key: <API KEY>';
$headers[] = 'Content-Type: application/json';

$params = array(); //json 으로 변환할 데이터 배열
$params['searchType']    = '';
$params['searchOrder']   = '';
$post_data = json_encode($params);

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
curl_setopt($ch, CURLOPT_HEADER, 1);//헤더를 포함한다.
curl_setopt($ch, CURLOPT_REFERER, $url);
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
$response = curl_exec($ch);

아주 간단하고 이해하기 쉬운 curl 샘플을 공유합니다.


 
<?php
  $ch = curl_init(); // 리소스 초기화
  $url = "https://hiseon.me/post.php";
  // 옵션 설정
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  // post 형태로 데이터를 전송할 경우
  $postdata = array(
    "name"=>"value"
  );
  // api 키 배열로 구성
  $array__httpheader = array(
    'Content-Type: application/json',
    'x-api-key:'. $pay_Key
  );
  curl_setopt($ch, CURLOPT_POST, 1);
  curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($postdata));
  curl_setopt($ch, CURLOPT_HTTPHEADER, $array_httpheader)
  $output = curl_exec($ch); // 데이터 요청 후 수신
  echo $output;
  curl_close($ch);  // 리소스 해제
?>

참고 하시어 도움이 되셨으면 합니다.

해보시다 안되시면 쪽지 주세요..

안녕하세요. 두분 모두 답변주셔서 진심으로 감사드립니다.
가장 빨리 답변 주신 분으로 채택하였습니다.

참고로 최종 적용한 코드는 아래와 같습니다.

 

<?php

$url = "api요청 받을 주소";

$curl = curl_init($url);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

$headers = array(
   "x-api-key: 3SkyoooooooooooofHx",
   "Content-Type: application/json",
);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);

$data = <<<DATA
{
}
DATA;

curl_setopt($curl, CURLOPT_POSTFIELDS, $data);

//for debug only!
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);

$resp = curl_exec($curl);
curl_close($curl);
var_dump($resp);

?>

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
filter #api ×
전체 258
© SIRSOFT
현재 페이지 제일 처음으로