Ans*_*hra 4 php validation web-services laravel-5.1
我正在为移动应用程序创建 Rest Full Api,我正在验证请求,它将我重定向到有错误的登录页面。
这是我的 ApiController(我为所有 api 创建了):
use App\User as UserModel;
use App\Fb_friend as FbFriendsModel;
use App\Http\Requests\UserRequest;
class ApiController extends Controller
{
/**
* Create a new movie model instance.
*
* @return void
*/
public function __construct(UserModel $user, FbFriendsModel $fb_friends){
$this->user = $user;
$this->fb_friends = $fb_friends;
}
public function createUser (UserRequest $request) {
// some code here
}
Run Code Online (Sandbox Code Playgroud)
路线:
Route::post('createUser', ['as' => 'createUser', 'uses' => 'ApiController@createUser']);
Run Code Online (Sandbox Code Playgroud)
用户请求.php:
public function rules()
{
return [
'fb_id' => 'required|unique:users',
'username' => 'required|unique:users',
'email' => 'required|unique:users',
'image' => 'required',
'device_id' => 'required',
'status' => 'required',
];
}
Run Code Online (Sandbox Code Playgroud)
我已经覆盖了一个函数 Request.php 用于错误格式:
abstract class Request extends FormRequest
{
protected function formatErrors(Validator $validator)
{
return [$validator->messages()->toJson()];
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试通过邮递员调用服务时,它以 json 格式返回错误,但它也打印登录页面,我不明白为什么?
如果您使用 Postman 来测试 API,则无需覆盖 Request 类中的 response(),可以按照以下步骤操作,
将自定义请求中的 authorize() 中的返回类型设为 true,
public function authorize()
{
//make it true
return true;
}
Run Code Online (Sandbox Code Playgroud)转到 Postman 中的 headers 部分并定义 Accept 类型,
Accept:application/json
Run Code Online (Sandbox Code Playgroud)现在点击你的 API 和 bam 的端点。对我来说工作正常。