it-swarm-ko.tech

테스트 엔드 포인트를 작성하는 방법은 무엇입니까?

drupal을 처음 사용하고 REST 및 RESTWS 모듈을 사용하기 위해 서비스 모듈을 사용하고 있습니다. RESTWS를 사용했으며- http : //base_url/node/1.xml 이제 외부의 PHP 응용 프로그램을 drupal에 추가했습니다. 노드에서 사용자와 노드를 추가해야합니다. http : // base_drupal_url/drupal7/test_endpoint/users 를 사용해야합니다. Drupal 7, 끝점 제목, 이름 및 끝점 경로를 지정하고 curl에서 동일한 끝점 경로를 제공해야한다고 가정합니다.

나머지 서버가 설치되어 있는지 확인하는 방법과 끝점 경로를 만드는 방법에 대한 도움이 될 것입니다.

서비스 모듈 services-7.x-3.0-rc3과 함께 Drupal 7 사용)

28
sridhar

서비스 모듈은 사용하기 쉽지만 개념에 익숙하지 않은 경우 특히 구성하기가 까다로울 수 있습니다. 따라서 "Drupal Answers"사용자가 서비스 모듈을 쉽게 구성 할 수 있도록 스크린 샷을 게시하겠습니다.

다음은 내 컴퓨터에 설치된 서비스 모듈의 버전입니다 :

enter image description here

아래에 표시된대로 'rest'라는 엔드 포인트를 만듭니다.

enter image description here

서버 및 엔드 포인트 경로 유형을 선택하십시오

enter image description here

사용하려는 자원 목록을 선택하고 별명을 지정하십시오 :

enter image description here

응답하려는 포맷터와 요청 파서를 선택하십시오 :

enter image description here

아래 그림과 같이 구성을 테스트 할 수 있습니다 :

enter image description here

아래와 같이 모든 노드의 목록을 얻을 수 있습니다 :

enter image description here

그리고 특정 노드 :

enter image description here

다음은 MichaelCole here http://drupal.org/node/910598#comment-4677738 에서 제공하는 훌륭한 예제 스크립트입니다. PHP 응용 프로그램.

이 답변의 완성을 위해 그의 코드를 복제하고 있습니다.

//--------------login to the server------------------------
$service_url = 'http://example.dev/rest/user/login.xml'; // .xml asks for xml data in response
$post_data = array(
    'username' => 'test',
    'password' => 'test',
);
$post_data = http_build_query($post_data, '', '&'); // Format post data as application/x-www-form-urlencoded
// set up the request
$curl = curl_init($service_url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);  // have curl_exec return a string

curl_setopt($curl, CURLOPT_POST, true);             // do a POST
curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data); // POST this data
// make the request
curl_setopt($curl, CURLOPT_VERBOSE, true); // output to command line
$response = curl_exec($curl);
curl_close($curl);
print "LOGIN RESPONSE:\n";
var_dump($response);



// parse the response
$xml = new SimpleXMLElement($response);
$session_cookie = $xml->session_name . '=' . $xml->sessid;
// print "SESSION_COOKIE: $session_cookie";

file_put_contents('session_cookie.txt', $session_cookie);

//----------------create a node -------------------------------

$node_data = array(
    'type' => 'ct_metadata_core',
    'title' => 'test layer',
    'field_core_lat_n[und][0]' => array('value' => '90'),
    'field_core_lat_s[und][0]' => array('value' => '-90'),
    'field_core_long_e[und][0]' => array('value' => '180'),
    'field_core_long_w[und][0]' => array('value' => '-180'),
    'field_core_description[und][0]' => array('value' => 'National Data Buoy Center'),
    'field_core_originator[und][0]' => array('value' => 'NDBC'),
    'field_core_url[und][0]' => array('url' => 'http://www.ndbc.noaa.gov/kml/marineobs_as_kml.php?sort=pgm'),
    'field_cont_res_name_org[und][0]' => array('value' => 'test'),

);


$service_url = 'http://example.dev/rest/node'; // .xml asks for xml data in response
$session_cookie = file_get_contents('session_cookie.txt');

$node_data = http_build_query($node_data, '', '&'); // Format post data as application/x-www-form-urlencoded
// set up the request
$curl = curl_init($service_url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);  // have curl_exec return a string

curl_setopt($curl, CURLOPT_COOKIE, "$session_cookie"); // use the previously saved session

curl_setopt($curl, CURLOPT_POST, true);             // do a POST
curl_setopt($curl, CURLOPT_POSTFIELDS, $node_data); // POST this data
// make the request
curl_setopt($curl, CURLOPT_VERBOSE, true); // output to command line
$response = curl_exec($curl);
curl_close($curl);
print "CREATE NODE RESPONSE:\n";
var_dump($response);


//----------------logout from the server-------------------------

$service_url = 'http://example.dev/rest/user/logout';
$session_cookie = file_get_contents('session_cookie.txt');

// set up the request
$curl = curl_init($service_url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);  // have curl_exec return a string

curl_setopt($curl, CURLOPT_COOKIE, "$session_cookie"); // use the previously saved session
curl_setopt($curl, CURLOPT_POST, true);             // do a POST
curl_setopt($curl, CURLOPT_POSTFIELDS, ""); // POST this data
// make the request
curl_setopt($curl, CURLOPT_VERBOSE, true); // output to command line
$response = curl_exec($curl);
curl_close($curl);
print "LOGOUT RESPONSE:\n";
var_dump($response);
56
Ajinkya Kulkarni

서비스 3.x에 대한 리소스 만들기 를 읽는 것이 좋습니다.

또한 서비스와 RESTWS가 호환되는지 확인합니다. 둘 다 동일한 항목의 변형을 제공하므로 충돌 할 수 있습니다.

6
Blake Senftner