사용자 정의 REST API 데모를 작성 중입니다. 이제 데모에서 숫자와 문자열을 반환 할 수 있지만 다른 REST API와 같은 JSON 객체를 반환하려고합니다.
데모에서는 curl을 사용 하여 Magento 2 API (예 : 고객 정보 얻기 : http : //localhost/index.php/rest/V1/customers/1 )를 호출하고 JSON 문자열을 반환합니다.
"{\"id \ ": 1, \"group_id \ ": 1, \"default_billing \ ": \"1 \ ", \"created_at \ ": \"2016-12-13 14 : 57 : 30 \ " , \ "updated_at \": \ "2016-12-13 15:20:19 \", \ "created_in \": \ "기본 저장소보기 \", \ "email \": \ "75358050@qq.com \ ", \"firstname \ ": \"azol \ ", \"lastname \ ": \"young \ ", \"store_id \ ": 1, \"website_id \ ": 1, \"addresses \ ": [{ \ "id \": 1, \ "customer_id \": 1, \ "region \": {\ "region_code \": \ "AR \", \ "region \": \ "Arad \", \ "region_id \ ": 279}, \"region_id \ ": 279, \"country_id \ ": \"RO \ ", \"street \ ": [\"abc \ "], \"telephone \ ": \"111 \ ", \"postcode \ ": \"1111 \ ", \"city \ ": \"def \ ", \"firstname \ ": \"azol \ ", \"lastname \ ": \"young \ ", \"default_billing \ ": true}], \ "disable_auto_group_change \": 0} "
응답은 JSON 문자열이지만 모든 키에는 슬래시가 있습니다. 와 슬래시를 제거 할 수 있다는 것을 알고 str_replace
있지만 어리석은 방법입니다. 키 내에 슬래시없이 JSON 객체를 반환하는 다른 방법이 있습니까?
************ 업데이트 2016.12.27 ************
테스트 코드를 여기에 붙여 넣었습니다.
$method = 'GET';
$url = 'http://localhost/index.php/rest/V1/customers/1';
$data = [
'oauth_consumer_key' => $this::consumerKey,
'oauth_nonce' => md5(uniqid(rand(), true)),
'oauth_signature_method' => 'HMAC-SHA1',
'oauth_timestamp' => time(),
'oauth_token' => $this::accessToken,
'oauth_version' => '1.0',
];
$data['oauth_signature'] = $this->sign($method, $url, $data, $this::consumerSecret, $this::accessTokenSecret);
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_URL => $url,
CURLOPT_HTTPHEADER => [
'Authorization: OAuth ' . http_build_query($data, '', ','),
'Content-Type: application/json'
],
]);
$result = curl_exec($curl);
curl_close($curl);
// this code has slash still
//return stripslashes("hi i\" azol");
// has slashes still
//return stripcslashes("{\"id\":1,\"group_id\":1,\"default_billing\":\"1\",\"created_at\":\"2016-12-13 14:57:30\",\"updated_at\":\"2016-12-13 15:20:19\",\"created_in\":\"Default Store View\",\"email\":\"75358050@qq.com\",\"firstname\":\"azol\",\"lastname\":\"young\",\"store_id\":1,\"website_id\":1,\"addresses\":[{\"id\":1,\"customer_id\":1,\"region\":{\"region_code\":\"AR\",\"region\":\"Arad\",\"region_id\":279},\"region_id\":279,\"country_id\":\"RO\",\"street\":[\"abc\"],\"telephone\":\"111\",\"postcode\":\"1111\",\"city\":\"def\",\"firstname\":\"azol\",\"lastname\":\"young\",\"default_billing\":true}],\"disable_auto_group_change\":0}");
// has slashes still
//return json_encode(json_decode($result), JSON_UNESCAPED_SLASHES);
// this code will throw and expcetion:
// Undefined property: *****\*****\Model\Mycustom::$_response
//return $this->_response->representJson(json_encode($data));
return $result;
$json_string = stripslashes($result)
하고return json_decode($json_string, true);
return json_encode($result, JSON_UNESCAPED_SLASHES);
?