質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

1回答

4259閲覧

Laravel5.4 web API 外部からjson型のデータを受信

退会済みユーザー

退会済みユーザー

総合スコア0

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2017/10/16 02:22

編集2017/10/16 02:24

エラー:以下で何もデータが入って来ないです
$json = json_decode($request->all()['data'], true);

Laravel5.4 web API 外部からjson型のデータを受信したいのですがNullしか返って来ないです。

仕様:外部からは勝手にJson型のデータをPOSTで送信してますがそれを受信する
POSTで送信されてくる予定のJsonは以下の感じ:

{"authen_key":"認証キー", "basic_info":{""...}, "apply":{...},"":{...}}

以下はTestapiController.php

<?php namespace App\Http\Controllers; use App\test_api; use Illuminate\Http\Request; use Response; use DB; use Illuminate\Support\Facades\Input; use Illuminate\Database\QueryException; class TestApiController extends Controller { public $successStatus = 200; public function index() { $authentication_key = 'nhhsq847283dsd'; if($authentication_key === true){ return response()->json(['success' => $success], $this->successStatus, Test_info::all()); }else{ // パラメータがない場合はこの処理に来るので401 return Response::json(['message' => '401 Unauthorized'],401); } } public function store(Request $request) { $json = json_decode($request->all()['data'], true); //dd($json['job']['user_id']); //exit; try { $jobs = DB::table('users')->where('user_id', $json['basic_info']['user_id'])->first(); //取得したデータを違うテーブルに保存 DB::table('profile')->insert([ 'id'=>$json['basic_info']['user_id'],//これはAPIでこないので、すでにあるUserテーブル情報で保存。 'gender'=>$json['profile']['sex'], 'birth_on'=>$json['profile']['birth_day'], ]); //取得したデータを違うテーブルに保存 DB::table('offers')->insert([ 'job_id'=>$json['apply']['site_name'], 'job_id'=>$json['apply']['url'], ]); } catch(\Exception $ex){ //dd($ex); return Response::json(['message' => '500 Unauthorized'],500); exit; } return $response; }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

Request::input() に JSON を処理する処理が含まれていますので、それを素直に利用すればいいと思います。

php

1$jobs = DB::table('users')->where('user_id', $request->input('basic_info.user_id']))->first();

https://laravel.com/docs/5.4/requests

一点注意点があります。上記のURLのドキュメントに書かれている通り、この処理を行うためには、POST する際に Content-Type に "application/json" を指定する必要があります。

投稿2017/10/16 03:43

編集2017/10/16 03:47
okinaka3

総合スコア304

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

okinaka3

2017/10/18 00:58

テストの際は、ブラウザーで POST するのではなくて、 curl コマンドなどで 実際のリクエストと同じ形式のデータを送信して確認すると便利です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問