REST API - actions для rules вида /domain/users/user_id/..

Всё что касается построения API
Ответить
RGF
Сообщения: 213
Зарегистрирован: 2013.01.29, 13:19

REST API - actions для rules вида /domain/users/user_id/..

Сообщение RGF »

Подскажите, в каком направлении копать для правил вида /domen/users/user_id/

в urlManager для каждого указывать свой action и создавать action в контроллере:
config/web.php

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

'urlManager' => [
    'enablePrettyUrl' => true,
    'showScriptName' => false,
    'rules' => [
        [
            'class' => 'yii\rest\UrlRule',
            'controller' => 'test',
            'patterns' => [
                'GET    <domain_id>' => 'viewA',
                'GET    <domain_id>/<users>' => 'viewB',
                'GET    <domain_id>/<users>/<user_id>' => 'viewC', 
...
controllers/TestController.php
actionViewA() {............}
actionViewB() {............}
actionViewC() {............}

или использовать в одном action: if/else (switch/case) беря из GET переменные

или я вообще изобретаю велосипед и обработка этих правил идет какими то штатными методами?
Последний раз редактировалось RGF 2014.07.31, 16:42, всего редактировалось 4 раза.
RGF
Сообщения: 213
Зарегистрирован: 2013.01.29, 13:19

Re: REST API - actions для rules вида /domain/users/user_id/

Сообщение RGF »

enchikiben писал(а):просто оставлю это здесь :)
https://github.com/yiisoft/yii2/blob/ma ... k-start.md
читал в оригинале, не вижу тут ответа на мой вопрос?

если брать пример в документе: /users/123, то в моей нотации это будет /domain/users
Аватара пользователя
yiijeka
Сообщения: 3103
Зарегистрирован: 2012.01.28, 09:14
Откуда: Беларусь
Контактная информация:

Re: REST API - actions для rules вида /domain/users/user_id/

Сообщение yiijeka »

Распишите подробнее с примерами. Не совсем понятно, что нужно. /users/123 в /domain/users - что это, что такое domain, при чём тут actionViewA() {............} actionViewB() {............} actionViewC() {............}
RGF
Сообщения: 213
Зарегистрирован: 2013.01.29, 13:19

Re: REST API - actions для rules вида /domain/users/user_id/

Сообщение RGF »

yiijeka писал(а):Распишите подробнее с примерами. Не совсем понятно, что нужно. /users/123 в /domain/users - что это, что такое domain, при чём тут actionViewA() {............} actionViewB() {............} actionViewC() {............}
нужно, например, при запросе GET на :
/domen - отдавать информацию по домену
/domen/users - пользователях данного домена
/domen/users/user_id - о конкретном пользователе домена

и вопрос в том, как в контроллере обрабатывать эти запросы, в одном действии, с помощью условных конструкций, или в разных действиях этого контроллера, настроенных в роутинге, или еще как то
Аватара пользователя
yiijeka
Сообщения: 3103
Зарегистрирован: 2012.01.28, 09:14
Откуда: Беларусь
Контактная информация:

Re: REST API - actions для rules вида /domain/users/user_id/

Сообщение yiijeka »

1. Стандартно. Обыное view
2. У вас один контроллер domen в нём нужно просто создать действие actionUsers, которое будет возвращать список пользователей посмотрите код vendor\yiisoft\yii2\rest\IndexAction.php, можете его использовать или переписать на подобии его с условием id=domain_id. Это стандартное User/index + одно ваше условие.
3. Стандартное user/view, только его нужно обрабатывать в опять же в контроллере Domain.

И у вас тогда будет просто три правила в URL
RGF
Сообщения: 213
Зарегистрирован: 2013.01.29, 13:19

Re: REST API - actions для rules вида /domain/users/user_id/

Сообщение RGF »

yiijeka писал(а):1. Стандартно. Обыное view
2. У вас один контроллер domen в нём нужно просто создать действие actionUsers, которое будет возвращать список пользователей посмотрите код vendor\yiisoft\yii2\rest\IndexAction.php, можете его использовать или переписать на подобии его с условием id=domain_id. Это стандартное User/index + одно ваше условие.
3. Стандартное user/view, только его нужно обрабатывать в опять же в контроллере Domain.

И у вас тогда будет просто три правила в URL
то есть, по п.п. 1.2. маршрутизация будет звучать так:

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

'urlManager' => [
    'enablePrettyUrl' => true,
    'showScriptName' => false,
    'rules' => [
        [
            'class' => 'yii\rest\UrlRule',
            'controller' => 'test',
            'patterns' => [
                'GET    <domain_id>' => 'view',
                'GET    <domain_id>/<users>' => 'users',
                'GET    <domain_id>/<users>/<user_id>' => '?',  
а по п.3? /domain/users/user_id - это пользователь домена, а /users/user_id - это пользователь API, они разные
Аватара пользователя
yiijeka
Сообщения: 3103
Зарегистрирован: 2012.01.28, 09:14
Откуда: Беларусь
Контактная информация:

Re: REST API - actions для rules вида /domain/users/user_id/

Сообщение yiijeka »

'GET <domain_id>/<users>/<user_id>' => 'domain/user-info',

И создать в DomainController actionUserInfo c нужным функционалом.
RGF
Сообщения: 213
Зарегистрирован: 2013.01.29, 13:19

Re: REST API - actions для rules вида /domain/users/user_id/

Сообщение RGF »

yiijeka писал(а):'GET <domain_id>/<users>/<user_id>' => 'domain/user-info',

И создать в DomainController actionUserInfo c нужным функционалом.
собственно о чем и писал выше, вариант 1 - на каждое правило в urlManager - свое действие в контроллере
Ответить