1.上节课我们已经学会了自定义的控制器
http://localhost/yiiserver/web/index.php?r=user/index/
就可以访问我们的UserController
下面的方法actionIndex
2.穿插一个路由知识点
毕竟index.php?r=user/index
这种地址太难看了,
通过文档http://www.yiichina.com/doc/guide/2.0/rest-routing,我们做一些改造
config/web.php
打开下面代码的注释:
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
],
],
然后我们就可以这样访问了:http://localhost/yiiserver/web/index.php/user/index/
。
3.Yii框架表单安全机制
框架会要求你在提交时传入一个参数(这个参数由框架预先生成),你可以放到隐藏文本里,提交时带过去就可以了。
Yii里面这个提交参数叫做_csrf
,
生成这个参数可以通过echo \Yii::$app->request->csrfToken;
。
不过很可惜,这个功能我们API开发用不到,所以直接关掉即可。
public function init()
{
$this->enableCsrfValidation = false;
}
4.请求格式
默认POST请求,Content-Type的值为application/x-www-form-urlencoded
,请求体是以id=3&name=jack
这样的形式发送的。
后端这样接收:
echo \Yii::$app->request->post('id');
echo \Yii::$app->request->post('name');
如果Content-Type是application/json
呢?
发送json格式的数据:
{"id":3,"name":"jack"}
后端这样接收:
$body = file_get_contents("php://input");
echo json_decode($body)->name; //'jack'
这个是PHP原生的方式,但在Yii里我们可以简单配置一下就可以转换了config/web.php
:
'request' => [
// !!! insert a secret key in the following (if it is empty) - this is required by cookie validation
'cookieValidationKey' => 'xxxooooo',
'parsers' => [
'application/json' => 'yii\web\JsonParser',
'text/json' => 'yii\web\JsonParser' //这种类型,可以也用json解析器
],
],
然后后端就可以这样接收数据了:
function actionIndex()
{
// $body = file_get_contents("php://input");
// echo json_decode($body)->name; //'jack'
echo \Yii::$app->request->post('name');
}