рдпрд╣ рдХреЛрдИ рд░рд╣рд╕реНрдп рдирд╣реАрдВ рд╣реИ рдХрд┐ рдПрдкреАрдЖрдИ рд╣реЛрдирд╛ рдХрд┐рд╕реА рднреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдХреНрд╕рд░, рд╕рд┐рд╕реНрдЯрдо рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рдпрд╛ рдЗрд╕реЗ рдПрдХ рддреИрдпрд╛рд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рдорд░реНрдерди рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдУрд╡рд░рд╣реЗрдб рдореЗрдВ рдмрд╣реБрдд рд╕рдордп рд▓рдЧрддрд╛ рд╣реИред
рдореИрдВ рд╕рдореБрджрд╛рдп рдХреЛ рдПрдХ рдХрдареЛрд░ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЗ рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдХрд░рд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдХреЛрдб рдХреА рдирдХрд▓ рдХреЗ рдмрд┐рдирд╛ рдФрд░ рдореМрдЬреВрджрд╛ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдмрджрд▓рд╛рд╡ рдХреЗ рд╕рд╛рдеред рдпрд╛ рдХрд┐рд╕реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдкрд╛рдБрдЪ рдорд┐рдирдЯ рдореЗрдВ рдПрдкреАрдЖрдИ рдХреИрд╕реЗ рдЬреЛрдбрд╝реЗрдВ?
рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ
Yii рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд▓рд┐рдП рдПрдХ
рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд▓рд┐рдЦрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕реА рднреА MVC рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЖрдЗрдП рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде
RestUserController
рдирд┐рдпрдВрддреНрд░рдХ рд╣реИ:
actionIndex
- рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реВрдЪреАactionView
- рд╡реНрдпреВ рдпреВрдЬрд░actionCreate
- рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрдирд╛рдПрдБactionUpdate
- рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрджреНрдпрддрдиactionDelete
- рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ
RestUser
рдореЙрдбрд▓ рднреА рд╣реИ, рдЬреЛ рдПрдХ
ActvieRecord rest_users рдЯреЗрдмрд▓ рд╣реИред
actionCreate
рд╡рд┐рдзрд┐ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ, рдЬрд┐рд╕рдХрд╛ рдХрд╛рд░реНрдп рдирдпрд╛
RestUser
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрдирд╛рдирд╛ рд╣реИ,
class RestUserController extends Controller { ... public function actionCreate() { $model = new RestUser(); if (isset($_POST) && ($data = $_POST)) {
рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд╣реИ - рдпрджрд┐ рд╣рдо рдХреЗрд╡рд▓ рдЕрдиреБрд░реЛрдз
/restUser/create
- рдПрдХ рдирдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП HTML рдлреЙрд░реНрдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрдЧрд░ рд╣рдо рдЗрд╕ рдкрддреЗ рдкрд░ рдПрдХ
рдкреЛрд╕реНрдЯ рдЕрдиреБрд░реЛрдз рднреЗрдЬрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рддрд░реНрдХ рдХреЛ рдорд╛рдиреНрдп рдФрд░ рдЬреЛрдбрд╝ рджреЗрдЧрд╛, рдлрд┐рд░ рдпрд╛ рддреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдкреБрдирдГ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░реЗрдВ рдпрд╛ рдПрдЪрдЯреАрдПрдордПрд▓ рдлреЙрд░реНрдо c рджреЗрдЦреЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВред
рдЕрдм, рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдо рдПрдХ рдРрд╕рд╛ рдореЛрдмрд╛рдЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬреЛ рдЗрд╕рдХреЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕реЗ рдирдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрдирд╛ рд╕рдХреЗрдЧрд╛ред рд╕рд░реНрд╡рд░ API рдмрдирд╛рдиреЗ рдХрд╛ рд╕рд╣реА рддрд░реАрдХрд╛ рд╣реИред
рдХреНрдпреЛрдВрдХрд┐ рдЪреВрдВрдХрд┐ рд╣рдо рдПрдХ рд░реИрд╕реНрдЯрдлреБрд▓ рд╕реНрдЯрд╛рдЗрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд╕рд░реНрд╡рд░ рдФрд░ рдореЛрдмрд╛рдЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдкрд░рд╕реНрдкрд░ рдХреНрд░рд┐рдпрд╛,
рдХрд░реНрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдЕрдиреБрд░реЛрдз рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рджреЗрдЦреЗрдВрдЧреЗ:
рдЬрд╛рдВрдЪ
curl http://test.local/api/users \ -u demo:demo \ -d email="user@test.local" \ -d password="passwd"
рдЬрд╡рд╛рдм рд╣реИ
< HTTP/1.1 201 Created < Content-Type: application/json < WWW-Authenticate: Basic realm="App" < Location: http://test.local/api/users/TEST_ID { "object":"rest_user", "id":"TEST_ID", "email":"user@test.local", "name":"Test REST User" }
рдпрд╣рд╛рдВ, рдбреЗрдореЛ рдкрд╛рд╕рд╡рд░реНрдб рдХреЗ рд╕рд╛рде рдбреЗрдореЛ рд▓реЙрдЧрд┐рди рдХреЗ
HTTP рдмреЗрд╕рд┐рдХ рдХреЛрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдЖрд╡рд╢реНрдпрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдИрдореЗрд▓ рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рдкреНрд░реЗрд╖рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рдЬрд╡рд╛рдм рдореЗрдВ, рдпрджрд┐ рд╕рдм рдХреБрдЫ рд╕рд╣реА рд╣реИ, рддреЛ рд╣рдореЗрдВ рдирдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ JSON рдСрдмреНрдЬреЗрдХреНрдЯ рдорд┐рд▓рддрд╛ рд╣реИред
рд╣рдорд╛рд░реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдкреВрд░рд╛ рд╡рд┐рдЪрд╛рд░ рдПрдкреАрдЖрдИ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЬрд╡рд╛рдм рджреЗрдиреЗ
рдХреА рдХреНрд╖рдорддрд╛ рдореЗрдВ
рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реИ, рдХреЗрд╡рд▓
redirect
рдФрд░
render
рддрд░реАрдХреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдореЙрдбрд▓ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдирд┐рдпрдореЛрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реИред
рдмреЗрд╢рдХ, рдПрдкреАрдЖрдИ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреА рд╕рд╣реА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдиреЗ рдХреЗ рдЕрд╡рд░реЛрдзрди, рд╕рд╛рде рд╣реА рдореЙрдбрд▓ рдмрдирд╛рддреЗ рд╕рдордп рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд▓рд┐рдП рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╡реНрдпрд╛рдкрд╛рд░ рддрд░реНрдХ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред
рд╣рдорд╛рд░реЗ
рд╡рд┐рд╕реНрддрд╛рд░ рдореЗрдВ, рд╣рдордиреЗ
onException
рдФрд░
onError
рдХреЛ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯ
onException
рдФрд░ рд╕рд╛рде рд╣реА
CController
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмреЗрд╕
CActiveRecord
рдореЙрдбрд▓ рдФрд░
CController
рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝рдХрд░ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ред
рдирддреАрдЬрддрди, рдХреЛрдб рдЬреЛ рдПрдкреАрдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╕рдордп рд╡рд╛рдВрдЫрд┐рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрддрд╛ рд╣реИ, рдФрд░ рдПрдХ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдЕрдиреБрд░реЛрдз рдХреЗ рд╕рд╛рде HTML рдлреЙрд░реНрдо, рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛:
class RestUserController extends Controller { ... public function actionCreate() { $model = new RestUser(); if ($this->isPost() && ($data = $_POST)) {
рдирдП рдХреЛрдб рдФрд░ рдкрд┐рдЫрд▓реЗ рдПрдХ рдХреЗ рдмреАрдЪ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐
redirect
рд╡рд┐рдзрд┐ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг
$model->id
рдХреЗ
id
рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ
$model->id
, рд▓реЗрдХрд┐рди
$model
рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛, рддрд╛рдХрд┐ рдирд┐рд░реНрдорд┐рдд рдСрдмреНрдЬреЗрдХреНрдЯ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПред рд╕рд╛рде рд╣реА, рддреАрд╕рд░реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдиреЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛрдб 201 рдЬреЛрдбрд╝рд╛ - рдпрд╣ рдорд╛рдирдХ рдХреЗ рдЕрдиреБрдкрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде, рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реЗрдбрд░ рдЬрд┐рд╕рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдкрддрд╛ рд╣реЛрддрд╛ рд╣реИ, рдкреНрд░рд╕рд╛рд░рд┐рдд рд╣реЛрддрд╛ рд╣реИред рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ 3xx HTTP рдХреЛрдб рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИред
рдПрдХ рдФрд░ рдЕрдВрддрд░
render
рд╡рд┐рдзрд┐ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдЪреМрдерд╛ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдЬрд╡рд╛рдм рдореЗрдВ рдкреНрд░реЗрд╖рд┐рдд рдХрд┐рдП рдЧрдП
$data
рд╕рд░рдгреА рд╕реЗ рдлрд╝реАрд▓реНрдб рдХреА рдЧрдгрдирд╛ рд╣реИред рдпрджрд┐ рдкреИрд░рд╛рдореАрдЯрд░
null
рддреЛ рд╕рдВрдкреВрд░реНрдг
$data
рд╕рд░рдгреА рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддреА рд╣реИред
рдЕрдм, рдпрджрд┐ рдЕрдиреБрд░реЛрдз рдЧрд▓рдд рд╣реИ, рддреЛ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ HTML рдлреЙрд░реНрдо рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рдбреЗрдЯрд╛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд▓реМрдЯрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛:
рдЬрд╛рдВрдЪ
curl http://test.local/api/users \ -u demo:demo \ -d email="user@test.local"
рдЬрд╡рд╛рдм рд╣реИ
< HTTP/1.1 400 Bad Request < Content-Type: application/json < WWW-Authenticate: Basic realm="App" { "error":{ "params":[ { "code":"required", "message":"Password cannot be blank.", "name":"password" } ], "type":"invalid_param_error", "message":"Invalid data parameters" } }
рдареАрдХ рд╣реИ, рдЕрдм рд╣рдореЗрдВ рдХрд┐рд╕реА рддрд░рд╣ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдореЙрдбрд▓ рдбреЗрдЯрд╛ рдХреА рд░рдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рд╣рдорд╛рд░реЗ
RestUser
рдпрд╣
password
рдлрд╝реАрд▓реНрдб рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдпрдо рдореЗрдВ рджрд┐рдП рдЧрдП рдлрд╝реАрд▓реНрдб рдХреА рд╕реВрдЪреА рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВред
рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд░реНрд╢рди рдирд┐рдпрдо
rules
рд╡рд┐рдзрд┐ рдореЗрдВ рд╣реЛрдЧрд╛
class RestUser extends CModel { public function rules() { return array( ... array('id, email, name', 'safe', 'on' => 'render'), ); } }
рдЗрд╕ рдирд┐рдпрдо рдХреЛ рддрдм
getRenderAttributes
рдкрджреНрдзрддрд┐ рдореЗрдВ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдПрдЧрд╛, рдЬреЛ рдореЙрдбрд▓ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╕рднреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреА рдПрдХ рд╕рд░рдгреА рд▓реМрдЯрд╛рдПрдЧрд╛, рдпрджрд┐ рд╡реЗ рдирд┐рдпрдо рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИрдВ, рддреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рдВрдмрдВрдзреЛрдВ рд╕реЗ рдЧреБрдЬрд░рдирд╛ред
рдЕрдВрдд рдореЗрдВ, рдореИрдВ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдФрд░ рдкреНрд░рджрд░реНрд╢рди рдХреНрд╖рдорддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝реА рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред
рд╡рд┐рд╕реНрддрд╛рд░ рдХреЛрд░ рдШрдЯрдХ (рд╕реЗрд╡рд╛)
\rest\Service
рдЖрд╕рдкрд╛рд╕ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдШрдЯрдирд╛рдУрдВ рдХреЗ рдореБрдЦреНрдп рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдФрд░ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╣реА рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд▓рдЧрд╛ рд╣реБрдЖ рд╣реИред рдЗрд╕ рд╕реЗрд╡рд╛ рдореЗрдВ рдПрдбреЗрдкреНрдЯрд░
auth
рдФрд░
renderer
рджреЛ рд╕рдореВрд╣ рд╣реИрдВред
рдСрдереЗрдВрдЯрд┐рдХреЗрд╢рди рдореЗрдВ рдСрдереЗрдВрдЯрд┐рдХреЗрд╢рди рдПрдбрд╛рдкреНрдЯрд░реНрд╕ рд╣реИрдВ - рдбрд┐рдлреЙрд▓реНрдЯ
HTTP рдмреЗрд╕рд┐рдХ рдСрд░реНрдЯрд┐рдлрд┐рдХреЗрд╢рди рдПрдбреЗрдкреНрдЯрд░ рдЙрдкрд▓рдмреНрдз рд╣реИред
renderer
рдореЗрдВ рдбреЗрдЯрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдПрдбреЗрдкреНрдЯрд░ рд╣реЛрддреЗ рд╣реИрдВ - рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рджреЛ
JSON рдФрд░
XML рдПрдбреЗрдкреНрдЯрд░ рдЙрдкрд▓рдмреНрдз рд╣реИрдВред
рд╡рд┐рд╕реНрддрд╛рд░
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рд╕реЗрдЯрд┐рдВрдЧреНрд╕
рдЙрджрд╛рд╣рд░рдг
main.php
рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓
YiiBase::setPathOfAlias('rest', realpath(__DIR__ . '/../extensions/yii-rest-api/library/rest')); return array( 'basePath' => dirname(__FILE__) . DIRECTORY_SEPARATOR . '..', 'name' => 'My Web Application', 'preload' => array('restService'), 'import' => array( 'application.models.*', 'application.components.*', ), 'components' => array( 'restService' => array( 'class' => '\rest\Service', 'enable' =>strpos($_SERVER['REQUEST_URI'], '/api/') !== false,
рдирд┐рдпрдВрддреНрд░рдХ рдФрд░ рдкреБрдирд░реНрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рд╡реНрдпрд╡рд╣рд╛рд░ рдЬреЛрдбрд╝реЗрдВ
class RestUserController extends Controller { public function behaviors() { return array( 'restAPI' => array('class' => '\rest\controller\Behavior') ); }
рдЗрди рд╕рднреА рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдореВрд▓ рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдореЙрдбрд▓ рдореЗрдВ рд╡реНрдпрд╡рд╣рд╛рд░ рдЬреЛрдбрд╝реЗрдВ рддрд╛рдХрд┐ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдирд┐рдпрдо рдХрд╛рдо рдХрд░реЗрдВ
class RestUser extends CActiveRecord { public function behaviors() { return array( 'renderModel' => array('class' => '\rest\model\Behavior') ); } }
рд╕рдВрджрд░реНрдн
рдЧрд┐рдЯрд╣рдм рднрдВрдбрд╛рд░ -
github.com/paysio/yii-rest-apiрд╕реНрдерд╛рдкрдирд╛ рдФрд░ рд╕реЗрдЯрдЕрдк рд╡рд┐рд╡рд░рдг -
github.com/paysio/yii-rest-api#installationрдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдХреЛрдб
github.com/paysio/yii-rest-api/tree/master/demo рд╣реИ