2017-05-17 6 views
1

HTTPレスポンスでresponse()ヘルパーを使用しています。簡単な使用:追加のインデックスキーを使用したJSONレスポンスのカスタマイズ

response()->json(
    $this->response, 
    $this->status 
)->withHeaders([]); 

この意志出力:

$return['message'] = 'Request successful'; 
$return['data'] = response()->json(
    $this->response, 
    $this->status 
)->withHeaders([]); 

しかし、応答はした:

{ 
    "key" : "desired response" 
} 

は、しかし、私は応答のキーを追加したい

{ 
    "message": "Request successful", 
    "data": { 
    "headers": {}, 
    "original": { 
     "key" : "desired response" 
    }, 
    "exception": null 
    } 
} 

追加のキーがあります応答:headersoriginal & exception。どのように私はこの目的の形式を達成するために、そのことを取り除くことができます。

{ 
    "message": "Request successful", 
    "data": { 
     "key" : "desired response" 
    } 
} 
+0

あなたが使用していない理由は、リターン応答を() - > JSON()...? –

+0

@ MortaddaJafar-私はあなたが私のポストで見ることができるように、私がカスタムキーを追加したいときはいつも私の意図した応答を返さず、キー(例外、ヘッダー、オリジナル)必要があります。 –

+0

はい、あなたはreturn response() - > json(あなたのデータ,,)を使ってこれを行うことができます。 –

答えて

0

あなたはLaravel Provider

php artisan make:provider ResponseMacroServiceProvider 

<?php 

namespace App\Providers; 

use Response; 
use Illuminate\Support\ServiceProvider; 

class ResponseMacroServiceProvider extends ServiceProvider 
{ 

    /** 
    * Bootrap the application service 
    */ 
    public function boot() { 
     Response::macro('success', function ($headers, $originals) { 
      return Response::json([ 
       'message' => "Request successful", 
       'data' => [ 
        'headers' => $headers, 
        'original' => $originals, 
       ], 
       'error' => [ 
        'code' => 0 , 
        'message' => [] 
       ] 
      ]); 
     }); 


     Response::macro('error', function ($message, $status = 400) { 
      if(is_array($message)) 
       $message_repsonse = $message; 
      else 
       $message_repsonse = [$message]; 
      return Response::json([ 
       'message' => "Request failed", 
       'data' => [ 
        'headers' => null, 
        'original' => null, 
       ] 
       'error' => [ 
        'code' => $status, 
        'message' => $message_repsonse 
       ] 
      ]); 
     }); 
    } 

    /** 
    * Register application service 
    * @override 
    */ 
    public function register() { 

    } 

} 

編集しconfig/app.php

/* 
* Application Service Providers... 
*/ 
App\Providers\ResponseMacroServiceProvider::class, 

そして、あなたに対処しようとすることができますController

$headers = 'Your header'; 
$originals = Your_Model::find(1); 

return response()->success($headers, $originals); 

return response()->error($validator->errors()->all(), 300); 
+0

いいえ、私はヘッダーとオリジナルを排除しようとしています。あなたの提案に基づいて、それはそれを含んでいます。私はLumenを使っていますが、そのプロバイダは職人の 'make:'で利用できないようです。 –

0

あなたはこのコードを使用することによって、これを達成することができます:

$return =[] ; 
$return['message'] = 'Request successful'; // your message 
$return['data'] = $this->response; // your data 
return response()->json( // return json 
    $return, // your data here 
    $this->status // status here 
); 
関連する問題