Yii Framework Forum: Продолжаем изучать Yii - RESTful? - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Продолжаем изучать Yii - RESTful? Rate Topic: -----

#1 User is offline   Digital God 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 178
  • Joined: 30-January 09

Posted 24 March 2009 - 03:41 AM

Сейчас столкнулся со следующей проблемой, точнее даже не с проблемой...
Есть backend часть сайта. Выбираем управление новостями.. Решил разделить все на CRUD, соответственно есть create action, list/read action, delete и update. И черт меня дернул поэксперементировать с REST...
И тут пришлось гуглить... $_POST и $_GET в php есть, но нету встроенной поддержки delete и put запросов. Зарубежные умельцы изают curl api для этого... нашел так же вариант с php://input (который щас и тестирую)..

Ну и собственно возникает вопрос - а как правильно? и есть ли что-нить для REST в yii? думал тут написать класс для обработки http request (основываясь на CHttpRequest).. то есть добавить обработку данных и их получение (все-таки не считаю красивым в коде юзать $_POST и $_GET)...
или может вообще отказаться от rest?

может у кого есть какие-то идеи на эту тему?
0

#2 User is offline   KJedi 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 381
  • Joined: 19-October 08
  • Location:Nikolaev, Ukraine (Europe)

Posted 25 March 2009 - 02:31 AM

А что ты понимаешь под РЕСТ? Насколько я знаю, это подход к созданию веб-сервиса, альтернатива WSDL, например.
Нафиг это в даминке я не знаю, но даже если и надо. Зачем тебе PUT и DELETE методы? Если будешь их поддерживать - сразу открываешь нихреновенькую такую дырку :) Конечно, ты все защитишь, но все же.

Если стоит задачу управлдять сайтом с помощью дусктоп-приложения, то вполне можно решить все либо сделав веб-сервис на WSDL (В Иии это встроено), либо написав свои классы для Rest. Видел статейтку - простой Rest-сервис с помощью Reflection API.
0

#3 User is offline   Digital God 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 178
  • Joined: 30-January 09

Posted 25 March 2009 - 04:13 AM

Ну как это нафиг? :) если есть возможность разделить запросы по смыслу - очень даже не плохо..
о какой дырке ты говоришь?
0

#4 User is offline   KJedi 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 381
  • Joined: 19-October 08
  • Location:Nikolaev, Ukraine (Europe)

Posted 25 March 2009 - 04:20 AM

Не вижу смысла извращаться над пхп, который этого не поддерживает.
Я лично понятия неимею как обеспечивать безопасность при запросе PUT. Дырка в том, что ты даешь возможность использовать методы, позволющие менять файлы на сервере. Если поддержки этих методов нет, то поменять невозможно чисто теоретически.

В общем делай если сильно хочется, я бы не делал. Я бы ограничился REST запросами гет и пост. Гет - для получения, пост - для изменения.

Я так понимаю, у тебя JS-frontend? А Экста шарит делать PUT/DELETE запросы?
0

#5 User is offline   Digital God 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 178
  • Joined: 30-January 09

Posted 25 March 2009 - 04:23 AM

никаких прав на изменение файлов на сервере нету :) через put я получаю только данные а не команды...
гет - получение - пост изменение/добавление/удаление?

js-backend если быть точнее, да extjs умеет делать и put и delete запросы
0

#6 User is offline   KJedi 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 381
  • Joined: 19-October 08
  • Location:Nikolaev, Ukraine (Europe)

Posted 25 March 2009 - 04:33 AM

Хм... реализуешь - дай посмотреть :)

Думаю копать надо в сторону веб-сервиса Иии, посмотреть как он поступает с командами.

Но в принципе все должно быть построено на reflection. Почему копать вебсерсвис - потом что может не придется какие-то части самому писать.
0

#7 User is offline   Digital God 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 178
  • Joined: 30-January 09

Posted 25 March 2009 - 04:52 AM

я бы вообще сделал проще - extend CHttpRequest и все дела)) просто лень лишний класс мутить... попробую веб-сервис, хотя qiang сказал что он сделает поддержку REST в yii

реализую что? рест или админку? :) новости в админке уже пашут, ну и основа соответственно, щас юзеров делаю
0

#8 User is offline   KJedi 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 381
  • Joined: 19-October 08
  • Location:Nikolaev, Ukraine (Europe)

Posted 25 March 2009 - 05:04 AM

Рест конечно. Интересно все же.

Че я в админке не видел :) Экстовго интрерфейса насмотрелся до рези в глазах :)
0

#9 User is offline   Digital God 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 178
  • Joined: 30-January 09

Posted 25 March 2009 - 05:12 AM

Что-то я не видел чтобы "HTTP протокол не поддерживает PUT+DELETE"
Даже firebug все пишет - GET|POST|DELETE|PUT. Ну по крайней мере у меня все работает безо всяких там доп. полей :)

а на счет схемы да, так проще :) добавить 1 параметр в пост запрос...

вот пример js кода на extjs


                    Ext.Ajax.request({
                        url: '/backend/news/',
                        method: 'DELETE',
                        success: function(response){
                            var o = Ext.decode(response.responseText);
                            if (o.success)
                                Ext.each(recs,function(rec){
                                this.store.remove(rec);
                                });
                            else Ext.Msg.alert('Error', o.errors);
                        },
                        failure: function(o){
                            console.log(o);
                        },
                        params: {
                            newsId: ids.join(',')
                        }
                    });   

0

#10 User is offline   KJedi 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 381
  • Joined: 19-October 08
  • Location:Nikolaev, Ukraine (Europe)

Posted 25 March 2009 - 05:20 AM

а что, я разве говорил что хттп не поддерживает пут и делит??? А что тогда подерживает?
Я, с твоих слов говорил что пхп не работает с этими запросами.

Ага, и че, вот эта штука обрабатывается пхп-скриптом? А как ты получаешь переменную newsId?
0

#11 User is offline   Digital God 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 178
  • Joined: 30-January 09

Posted 25 March 2009 - 05:36 AM

Тут просто VIT написал пост и видимо уже удалил))))
Да, эта штука обрабатывается php скриптом и все гениальное просто
вот код обработки


$put = array();
parse_str(file_get_contents('php://input'), $put);


и дальше обращается $put['newsId']

и будет нам Щастье))))
0

#12 User is offline   KJedi 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 381
  • Joined: 19-October 08
  • Location:Nikolaev, Ukraine (Europe)

Posted 25 March 2009 - 06:34 AM

Прикольно. Только смысла особого не вижу, если передавать только ИДшники. Это экзотика :) ПУТ и ДЕЛИТ вообще-то для работы с файлами предназначены, я ж потому и ругался сначала :)
0

#13 User is offline   KJedi 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 381
  • Joined: 19-October 08
  • Location:Nikolaev, Ukraine (Europe)

Posted 25 March 2009 - 06:34 AM

Ну в смысле то что можно - понятно; вопрос - зачем?
0

#14 User is offline   Digital God 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 178
  • Joined: 30-January 09

Posted 25 March 2009 - 06:50 AM

Ну на сколько я почитал мануал к extjs и вообще про rest - это далеко не только для файлов... считается что это true web 2.0))))

а зачем.. спроси чего полегче)) сам не знаю, жил се спокойно с постом и гетом.. а щас еще и пут и делит на свою задницу нашел))

ну и так, на заметку статья на хабре http://habrahabr.ru/blogs/php/46032/
0

#15 User is offline   Vit 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 13
  • Joined: 19-March 09

Posted 25 March 2009 - 10:33 AM

http://ru.wikipedia.org/wiki/REST

Написано немного, но и то не все поняно ;)

Это все вопросы архитектуры, в прикладном плане это касается в первую очередь создания веб-сервисов.
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users