8-12 接口验证 Json显示"Unexpected 's'"
来源:8-12 Theme接口验证与重构
吃了饿饿了又吃
2017-05-27
老师你好
8-12 接口验证 postman选择Json显示是"Unexpected 's'" ,在html下是正常显示的.
必须在加上theme下的getSimpleList加上json('success');显示正常.
上一个也出现了同样问题,没找到方法就跳过了,这次又是如此,所以向你提问,不知道别的同学有没有这个状况。 我看视频是没有添加 json()方法,就反馈是正常的。
下图,最左边是老师视频的反馈。 中间是最后加上json方法。 右边是没加json()的显示错误
5回答
-
出现unexpect这个问题是因为,再postman里,会尝试格式化成json,而你返回的不是json而是一个字符串。你可以尝试在浏览器里访问应该就不会出现这个问题。或者:你return一个json格式的对象,也能正确得到结果。其实返回是没问题的。
122017-05-27 -
吃了饿饿了又吃
提问者
2017-05-29
解决的办法: 在config.php中把默认输出改成json,// 默认输出类型
'default_return_type' => 'json',00 -
吃了饿饿了又吃
提问者
2017-05-27
访问地址;http://wx.zerg.com/api/v1/theme?ids=1,2,3
V1/Theme.php
<?php
namespace app\api\controller\v1;
use app\api\validate\IDCollection;
use think\Controller;
use app\api\model\Theme as ThemeModel;
class Theme extends Controller
{
/*
* @url /theme?ids=id1,id2,id3,....
* @return 一组theme模型
* */
public function getSimpleList($ids=''){
(new IDCollection())->goCheck();
return 'success';
}
}route.php
Route::get('api/:version/theme','api/:version.Theme/getSimpleList');
IDCollection.php
<?php
namespace app\api\validate;
class IDCollection extends BaseValidate
{
protected $rule =[
'ids'=> 'require|checkIDs',
];
protected $message=[
'ids'=>'ids参数必须是以逗号分隔的多个正整数'
];
protected function checkIDs($value){
$value = explode(',',$value);
if(empty($value)){
return false;
}
foreach($value as $id){
if(!$this->isPositiveInteger($id)){
return false;
}
}
return true;
}
}BaseValidate.php
<?php
namespace app\api\validate;
use app\lib\exception\ParameterException;
use think\Exception;
use think\Validate;
use think\Request;
class BaseValidate extends Validate
{
public function goCheck(){
//获取http传入的参数
//对这些参数做检测
$request = Request::instance();
$params = $request->param();
$result = $this->batch()->check($params);
if(!$result){
$e = new ParameterException([
'msg'=> $this->error,
]);
throw $e;
}else{
return true;
}
}
protected function isPositiveInteger($value,$rule='',$data='',$field=''){
if(is_numeric($value) && is_int($value+0) && ($value+0)>0){
return true;
} else{
return false;
//return $field.'必须是正整数';
}
}
}00 -
7七月
2017-05-27
别的同学应该没这个问题,因为没有人提过。你把你现在错误的方法代码贴出来。
012017-05-27 -
吃了饿饿了又吃
提问者
2017-05-27
纠正下,中间这个是没加Json()方法的。
00
相似问题