0

ApiGilty の RPC サービスを使用してデータを返しています。正しいプロセスが 100% 確実ではないため、これがデータをフォーマットして返す正しい方法であるかどうかを再確認したいと思います。

編集:明確にするために、データは多くのエンティティから構築されています:

main
main_extra
main_data
main_data_days
main_data_tiers

メインをヒットしてすべてのサブエンティティを取得する方法はありますか? 現在、データをゼロから構築し、配列を返しています。

私のRPCコントローラーは次のとおりです。

use My\Data\Controller\DataInterface;
use Zend\Mvc\Controller\AbstractActionController;
use ZF\ContentNegotiation\ViewModel;

class MyDataController extends AbstractActionController
{
    const GENERAL_ERROR = 'api.rpc.my-data.my-data-controller';

    public function __construct(
        MyDataInterface $myData
    )
    {
        $this->myData = $myData;
    }


    public function myDataAction()
    {

        $my_id    = (int) $this->params()->fromRoute('my_id', 0);

        if ($my_id == 0)
        {
            $data = $this->myData->getMyData();
        } else
        {
            $data = $this->myData->getMyData($my_id);
        }

        $result = new ViewModel(array(
            'data' => $data
        ));

        return $result;

    }

}

データを作成するために、次のようなことをしています。

public function getMyData( $my_id = null )
{
    $returnArray = [];

    $array1 = [
        'key_1' => [1,2,3,4],
        'key_2' => '123',
        'key_3' => ['a','b','c']
    ];

    $array2 = [
        'key_1' => [1,2,3,4,5,6,7,8],
        'key_2' => '123456',
        'key_3' => ['a','b','c','d']
    ];

    if ($my_id == 1) {
        $array3 = ['some','or','other'];
    } else {$array3 = []; }

    $final_array = [
        'data1' => $array1,
        'data2' => $array2,
        'data3' => $array3
    ];

    $returnArray['data'] = $final_array;
    $returnArray['success'] = 'true';
    $returnArray['reason']  = '';


    return $returnArray;

}

郵便配達員に確認すると、次のようになります。

ここに画像の説明を入力

これを参照するものが何もないので、私の質問は単純です。これについて正しい方法で行ったことがありますか?また、これはリターン コードをどのようにフォーマットする必要がありますか?

ありがとう!

4

2 に答える 2

1

現在、Halプラグインは結果のレンダリングに使用されていませんか? jsonカスタムオブジェクトに応答しています。これは本当にあなたが望むものですか?

現在返されている応答は、仕様に従ってフォーマットされていませんHAL。適切な応答HALには、少なくとも. ヘッダーを に設定してこの結果を返すのは間違っています。代わりに使用する必要があります。_linksself hrefContent-Typeapplication/hal+jsonapplication/json

HALからの応答方法に関するドキュメントは、こちらにRPC-contollerあります。

あなたが何を達成したいのかわかりませんが、質問をもう少し具体的にして、他の人が助けてくれるかもしれません...

于 2015-02-24T08:49:35.247 に答える
0

おそらく、jsend http://labs.omniti.com/labs/jsendなどの標準に準拠しているか、hal-json を使用できます。matthew weier o'phinney は、このhttps: //mwop.net/blog/2014-03-26-apigility-rpc-with-hal.html

また、配列を返すだけで、apigility が JSON を返すため、ビュー モデルを返す必要はありません。そのルートを下る場合は、jsendViewModel を作成することもできます。

正確な答えではありませんが、これがお役に立てば幸いです。

于 2015-02-23T13:47:35.960 に答える