Laravel - données POST est null lors de l'utilisation demande externe
Je suis nouveau sur laravel, et je suis en train de mettre en œuvre une simple api rest.
J'ai le contrôleur mis en œuvre et testés par des tests unitaires.
Mon problème est avec la requête POST.
Via les tests d'Entrée:json a données, par l'intermédiaire externe reste client, elle renvoie null.
C'est le code de l'unité de test
$newMenu = array(
'name'=>'Christmas Menu',
'description'=>'Christmas Menu',
'img_url'=>'http://www.example.com',
'type_id'=>1,
);
Request::setMethod('POST');
Input::$json = $newMenu;
$response = Controller::call('menu@index');
Ce que je fais mal?
Mise à JOUR:
C'est sacrément me rend fou
J'ai instancié une nouvelle laravel projet et simplement ce code:
Routes
Route::get('test', 'home@index');
Route::post('test', 'home@index');
Contrôleur:
class Home_Controller extends Base_Controller {
public $restful = true;
public function get_index()
{
return Response::json(['test'=>'hello world']);
}
public function post_index()
{
return Response::json(['test'=>Input::all()]);
}
}
CURL appel:
curl -H "Accept:application/json" -H"Content-type: application/json" -X POST -d '{"title":"world"}' http://localhost/laravel-post/public/test
réponse:
{"test":[]}
Quelqu'un peut-il m'indiquer quel est le problème.
C'est vraiment m'empêchant d'utiliser laravel, et j'ai vraiment aimé le concept.
Avez-vous essayé dans un navigateur? Juste pour s'assurer que votre curl appel n'est pas le problème?
Je l'ai essayé à l'aide d'un client rest (CocoaRest Client), Mais je n'ai pas créé l'interface graphique encore, donc pas de test du navigateur encore
Je l'ai essayé à l'aide d'un client rest (CocoaRest Client), Mais je n'ai pas créé l'interface graphique encore, donc pas de test du navigateur encore
OriginalL'auteur Ricardo Gomes | 2013-03-28
Vous devez vous connecter pour publier un commentaire.
Parce que vous êtes l'affichage de JSON comme votre corps HTTP vous ne l'obtenez pas avec d'Entrée::all();
Vous devez utiliser:
Vous pouvez également utiliser
au lieu de
OriginalL'auteur Marius Kažemėkaitis
Si vous utilisez :
Route::post('test', 'XYZController@test');
Envoyer format des données :
Content-type : application/json
Par exemple :
{"data":"foo bar"}
Et vous pouvez obtenir le poste (pour tous les autres:get, put...etc) avec :
C'est clairement écrit dans ici : http://laravel.com/docs/requests
. Corriger
Content-type
est très important!Je ne suis pas sûr de votre CURL appel est correct. Peut-être que cela peut vous être utile : Comment publier des données JSON avec Curl à partir de la Borne/ligne de commande pour Tester Printemps RESTE?
Je suis en utilisant
Input::get('data')
et il fonctionne.OriginalL'auteur M.Gökay Borulday
Supprimer l'en-tête Content-type: application/json si vous l'envoyez que des paires clé-valeur et non pas un json
OriginalL'auteur Rayiez