今天测试的时候,发现有个post请求很奇怪,它的url中的参数名和body请求体的参数名相同,那么后台获取到的该参数的值会是url中的还是body请求体中的呢?亦或是二者都获取?
首先我的路由写法是:
Route::post('goodbye/:id','application/Test/goodbye');
然后我的测试文件为获取post请求的所有参数值(包括url与body)
<?php
/**
* Created by PhpStorm.
* User: 咸鱼俊
* Date: 2019/7/19
* Time: 10:25
*/
namespace app\application\controller;
use think\Request;
class Test
{
public function goodbye(){
//获取url后面的所有所有参数值
$all = Request::instance()->param();
var_dump($all);
}
}
那么接下来用postman测试一下:
从上图可以发现,url携带的id参数值为123,而body请求体中携带的id参数值为hhh,当经过路由(Route::post('goodbye/:id','application/Test/goodbye'); )之后,获取的则是url的id参数值,body请求体的id参数值无法获取。
如果我们只需要获取body的内容,可以修改Request实例代码:
$all = Request::instance()->post();
var_dump($all);
当然也可以选择获取body请求体中指定的参数值:
$all = Request::instance()->post('id');
var_dump($all);