Yii2 Json-Rpc 2.0 Client and Server

Выкладываем свои наработки
Ответить
Аватара пользователя
nizsheanez
Сообщения: 814
Зарегистрирован: 2011.04.29, 13:09
Откуда: Москва

Yii2 Json-Rpc 2.0 Client and Server

Сообщение nizsheanez »

Портированные для Yii2 Json-Rpc 2.0 сервер и клиент

- JSON-RPC 2.0 Specification support
- JSON-RPC server implemented as Action
- JSON-RPC client

https://github.com/nizsheanez/yii2-json-rpc
Аватара пользователя
nizsheanez
Сообщения: 814
Зарегистрирован: 2011.04.29, 13:09
Откуда: Москва

Re: Yii2 Json-Rpc 2.0 Client and Server

Сообщение nizsheanez »

yep, done. thanx
mlapko
Сообщения: 37
Зарегистрирован: 2012.06.03, 21:57

Re: Yii2 Json-Rpc 2.0 Client and Server

Сообщение mlapko »

nizsheanez/JsonRpc/Action.php

48 line: echo json_encode();
Я думаю так не должно быть. Должно echo json_encode($answer);
Аватара пользователя
anton44eg
Сообщения: 2716
Зарегистрирован: 2012.01.25, 13:37
Откуда: Киев

Re: Yii2 Json-Rpc 2.0 Client and Server

Сообщение anton44eg »

думаю про баги удобней на гитхабе отписывать, а не тут :)
Аватара пользователя
nizsheanez
Сообщения: 814
Зарегистрирован: 2011.04.29, 13:09
Откуда: Москва

Re: Yii2 Json-Rpc 2.0 Client and Server

Сообщение nizsheanez »

Ага, ну в общем-то как всегда. Исправил и не закоммитил ))
Спасибо. Да, лучше на гитхаб, его для того и сделали.
Tpona
Сообщения: 222
Зарегистрирован: 2011.06.05, 19:00

Re: Yii2 Json-Rpc 2.0 Client and Server

Сообщение Tpona »

Для Yii 1.xx подойдет?
Tpona
Сообщения: 222
Зарегистрирован: 2011.06.05, 19:00

Re: Yii2 Json-Rpc 2.0 Client and Server

Сообщение Tpona »

Не подойдет (
По-другому вопрос - где бы взять тоже самое под Yii 1.xx?
Аватара пользователя
nizsheanez
Сообщения: 814
Зарегистрирован: 2011.04.29, 13:09
Откуда: Москва

Re: Yii2 Json-Rpc 2.0 Client and Server

Сообщение nizsheanez »

cranetm
Сообщения: 5
Зарегистрирован: 2014.12.08, 12:41

Re: Yii2 Json-Rpc 2.0 Client and Server

Сообщение cranetm »

nizsheanez, чтото не поднялся с коропки екстеншен + он не поддерживает полностю спецификацию JSON-RPC 2.0.
Один из примеров:
у нас есть медот subtract($subtrahend, $minuend)
тогда на запросы
{"jsonrpc": "2.0", "method": "subtract", "params": [42, 23], "id": 1}
и
{"jsonrpc": "2.0", "method": "subtract", "params": {"subtrahend": 23, "minuend": 42}, "id": 1}
будут совсем разные ответы

погуглив альтернативы с большимой удивлением нашел форк твоей реализации на гитхабе с приметкою "Fixed version"))
https://github.com/TheFuzz69/yii2-json-rpc
что и натолкнуло меня на грязные мыслишки написать свою реализацию + добавил кучу фич по безопасности данных + проще + методы в стиле yii-действий (все стандартно без извращений), а сама реализация поддержки протокола на стороне контроллера, а не действия. Рекомендую попробовать:
https://github.com/cranetm/yii2-json-rpc-2.0
Короче, выходные прошли на славу)
Аватара пользователя
nizsheanez
Сообщения: 814
Зарегистрирован: 2011.04.29, 13:09
Откуда: Москва

Re: Yii2 Json-Rpc 2.0 Client and Server

Сообщение nizsheanez »

cranetm, крутотень! Я свое расширение не использовал никогда c Yii2, только портировал с Yii1
А надо предложить пулл реквест
indeego
Сообщения: 17
Зарегистрирован: 2014.10.20, 05:54
Откуда: Омск

Re: Yii2 Json-Rpc 2.0 Client and Server

Сообщение indeego »

Что то не совсем ясно как использовать решение Cranetm.
Спасибо за труд, но документация явно недостаточна. И вот почему.
1) Делаю все тоже самое что мне предлагает README, но экшены не работают, да что уж говорить, контроллер созданный мной возвращает 404
2) Нет явного описания как реализовать сервер, а как клиента. Возможно автор понимает, я нет.

Чтобы не думали что я тут вброс устроил, вот мой код, который не работает:

Код: Выделить всё

<?php

namespace app\controllers;

use Yii;
use yii\filters\VerbFilter;


class ServicesController extends \JsonRpc2\Controller {

    public function behaviors()
    {
        return [

            'verbs' => [
                'class' => VerbFilter::className(),
                'actions' => [

                    'index' => ['get'],

                ],
            ],
        ];
    }


    public function actionIndex($message)
    {
        return ["message" => "hello ".$message];

    }
}
Запрос выполняю при помощи утилиты httpie:

Код: Выделить всё

 http site.local/services < req.json;
Содержимое req.json:

Код: Выделить всё

{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "index",
    "params": ["world"]
}
В результате "отдается" документ 404. Остается только гадать, что я сделал не так.
Буду благодарен авторам, если направят на путь истины
cranetm
Сообщения: 5
Зарегистрирован: 2014.12.08, 12:41

Re: Yii2 Json-Rpc 2.0 Client and Server

Сообщение cranetm »

Уважаемый indeego,
спасибо за фидбек.
В моей документации пишет прямо перед запросом на шаге 4 "used pretty urls without index.php" - это означает, что нужно настроить человеко-понятные-урлы (чпу), у Вас чпу работают?
вот ссылка на документацию: http://www.yiiframework.com/wiki/214/ur ... index-php/

>В результате "отдается" документ 404. Остается только гадать, что я сделал не так.
Моя документация не рассчитана на описание как настроить роутинг, по этому для Вас она, к сожелению, неточная.

P.S. Вы должны использовать вместо GET запроса - POST, так как message body для GET- плохой стиль и GET не предназначен для такого типа запросов ( https://groups.yahoo.com/neo/groups/res ... sages/9962 )
indeego
Сообщения: 17
Зарегистрирован: 2014.10.20, 05:54
Откуда: Омск

Re: Yii2 Json-Rpc 2.0 Client and Server

Сообщение indeego »

Да, я все проверил.
1. PrettyUrl включен
2. Роутинг впорядке
3. Используется POST запрос
К сожалению я не могу заставить работать ваш пример
cranetm
Сообщения: 5
Зарегистрирован: 2014.12.08, 12:41

Re: Yii2 Json-Rpc 2.0 Client and Server

Сообщение cranetm »

еще важно, чтобы Header Content-Type был равен application/json
Записал видео-инструкцию http://screencast.com/t/jM20NSUOF8 .
indeego
Сообщения: 17
Зарегистрирован: 2014.10.20, 05:54
Откуда: Омск

Re: Yii2 Json-Rpc 2.0 Client and Server

Сообщение indeego »

Cranetm
Ну ты совсем за дураков держишь :D
Единственное чего я не сделал, так это действительно не передал в header Content-Type
Спасибо.
cranetm
Сообщения: 5
Зарегистрирован: 2014.12.08, 12:41

Re: Yii2 Json-Rpc 2.0 Client and Server

Сообщение cranetm »

Рад быть полезным.
Добавлю в инструкцию Content-Type.
Советую попробовать валидацию данных.
cranetm
Сообщения: 5
Зарегистрирован: 2014.12.08, 12:41

Re: Yii2 Json-Rpc 2.0 Client and Server

Сообщение cranetm »

nizsheanez писал(а):cranetm, крутотень! Я свое расширение не использовал никогда c Yii2, только портировал с Yii1
А надо предложить пулл реквест
Спасибо. Главное чтобы работало)
Ответить