restserver example php codeigniter codeigniter-2 rest-client codeigniter-restserver

php - example - CodeIgniter Pasando datos POST de RestClient a RestServer API



codeigniter-restserver (5)

He pasado todo el día tratando de resolver este problema. Publicar este número aquí es mi última esperanza. Espero que alguien pueda ayudar para continuar trabajando en mi primer trabajo.

Entonces, POST funciona bien cuando se pasan directamente datos de mis vistas al RestServer directamente. Sin embargo, la API RESTServer no puede encontrar datos de POST enviados desde RestClient.

Aquí están los fragmentos:

RestClient API: $ver = ''v1''; $config = array(''server'' => base_url()."v1", ''api_key'' => ''xxxxxx'', ''api_name'' => ''X-API-KEY'', ''http_user'' => ''admin'', ''http_pass'' => ''xxxxx'', ''http_auth'' => ''basic'', ); $this->rest->initialize($config); $this->rest->format(''application/json''); $param = array( ''id'' => $this->input->post(''id''), // works fine here ''name'' => $this->input->post(''name'') ); $user = $this->rest->post(''employer/postNewProject'', $param, ''json''); //if (isset($user->errors)) show_404(''admin''); $this->rest->debug();

API RestServer

class Employer extends REST_Controller { public function __construct() { parent::__construct(); $this->lang->load("application"); $this->load->library("users/auth"); Datamapper::add_model_path( array( APPPATH."modules" ) ); } public function postNewProject_post() { // I tired $this->post() and $this->input->post() but both not finding the data $message = array("id" => $this->post("id"), "name" => $this->input->post("name")); $this->response($message, 200); // 200 being the HTTP response code } }

Resultados:

Response when using $this->post(''id''); {"id":false} Response when using $this->post(); {"id":[]}

Nota: He reemplazado las solicitudes POSTS con datos codificados, y aún RestServer no puede recibir los datos de mi RestClient.

Si necesita que le proporcione algo más, por favor pregunte.

Gracias de antemano.


Aplicación de tipo de contenido / x-www-form-urlencoded utilizada para el método de publicación

$param = array( ''id'' => $this->input->post(''id''), // works fine here ''name'' => $this->input->post(''name'') ); $user = $this->rest->post(''employer/postNewProject'', $param, ''application/x-www-form-urlencoded'');

El tipo de contenido json para el método de publicación RestServer API se cambiará para publicación

public function postNewProject_post() { $entity = file_get_contents(''php://input'', ''r''); print_r($entity); }


Asegúrate de recibir datos, utiliza

echo ''<pre> all data received: ''.print_r($_REQUEST,1).''</pre>'';

asegúrate de que sea de correos

echo ''<pre> post data: ''.print_r($_POST,1).''</pre>'';


Averiguo cuándo y se pasa el tercer parámetro vacío (o cuando se elimina el tercer parámetro), entonces funciona.

//Not working $user = $this->rest->post(''employer/postNewProject'', $param, ''json''); //when i change to this ,it''s working $user = $this->rest->post(''employer/postNewProject'', $param.''''); //or $user = $this->rest->post(''employer/postNewProject'', $param);

Si alguien tiene una solución mejor para que pueda otorgar recompensa.


En su API de RestServer, no tendrá acceso a los datos de POST, los datos de POST de la API de RestClient se pasan a la API de RestServer a través de $ param array, y la API de RestServer recibe esa matriz. En la API de RestServer, debería poder acceder a esos valores a través de la matriz $ param, suponiendo que las funciones de la API de RestServer consuman la matriz $ param y la pasen.


Utilice este método para enviar los datos del cliente Rest al servidor Rest utilizando el método de publicación. Leer comentario en cada linea

// initialize you setting $config = array(''server'' => base_url() . "v1", ''api_key'' => ''xxxxxx'', ''api_name'' => ''X-API-KEY'', ''http_user'' => ''admin'', ''http_pass'' => ''xxxxx'', ''http_auth'' => ''basic'', ); $this->rest->initialize($config); // Set method of sending data $method = ''post''; // create your param data $param = array( ''id'' => $this->input->post(''id''), // works fine here ''name'' => $this->input->post(''name'') ); // url where you want to send your param data. $uri = ''employer/postNewProject''; // set format you sending data $this->rest->format(''application/json''); // send your param data to given url using this $result = $this->rest->{$method}($uri, $params);

// código para su employer/postNewProject controlador employer/postNewProject

Controlador

function postNewProject() { $data=array( ''id'' => $this->post(''id''), ''name'' => $this->post(''name'') ); print_r($data); }