吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1506|回复: 9
收起左侧

[已解决] 求助PHP-Laravel-API大佬

[复制链接]
Samding 发表于 2020-4-3 15:16
本帖最后由 Samding 于 2020-4-3 16:07 编辑

目的:输入数据库中存在的id就返回图1的内容,输入不存在的id就返回图2的错误信息
现在只能实现前半句,输入不存在的id并不会返回错误信息,什么都不会返回,求大佬看下为什么

image.png
image.png
image.png
image.png
image.png
Hander.php
[PHP] 纯文本查看 复制代码
<?php

namespace App\Exceptions;

use Exception;
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
use Illuminate\Database\Eloquent\ModelNotFoundException;

class Handler extends ExceptionHandler
{
    /**
     * A list of the exception types that are not reported.
     *
     * [url=home.php?mod=space&uid=517055]@var[/url] array
     */
    protected $dontReport = [
        //
    ];

    /**
     * A list of the inputs that are never flashed for validation exceptions.
     *
     * @var array
     */
    protected $dontFlash = [
        'password',
        'password_confirmation',
    ];

    /**
     * Report or log an exception.
     *
     * [url=home.php?mod=space&uid=952169]@Param[/url]  \Exception  $exception
     * [url=home.php?mod=space&uid=155549]@Return[/url] void
     */
    public function report(Exception $exception)
    {
        parent::report($exception);
    }

    /**
     * Render an exception into an HTTP response.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Exception  $exception
     * @return \Illuminate\Http\Response
     */
        public function render($request, Exception $exception)
        {
           if ($exception instanceof ModelNotFoundException) {
               return response()->json([
                   'error' => 'Resource not found.'
               ],404);
           }
           return parent::render($request, $exception);
        }
}


Api.php
[Asm] 纯文本查看 复制代码
<?php

use Illuminate\Http\Request;
use App\Article;
use Illuminate\Support\Facades\Log;

/*
|--------------------------------------------------------------------------
| API Routes
|--------------------------------------------------------------------------
|
| Here is where you can register API routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| is assigned the "api" middleware group. Enjoy building your API!
|
*/

Route::middleware('auth:api')->get('/user', function (Request $request) {
    return $request->user();
});

Route::get('articles', 'ArticleController@index');
Route::get('articles/{id}', 'ArticleController@show');
Route::post('articles', 'ArticleController@store');
Route::put('articles/{id}', 'ArticleController@update');
Route::delete('articles/{id}', 'ArticleController@delete');


ArticleController.php
[Asm] 纯文本查看 复制代码
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Article;

class ArticleController extends Controller
{
public function index()
        {
                return Article::all();
        }
        
        public function show($id)
        {
                return Article::find($id);
        }
        
        public function store(Request $request)
        {
                return Article::create($request->all());
        }
        
        public function update(Request $request, $id)
        {
                $article = Article::findOrFail($id);
                $article->update($request->all());
        
                return $article;
        }
        
        public function delete(Request $request, $id)
        {
                $article = Article::findOrFail($id);
                $article->delete();
        
                return 204;
        }
}

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

琴似蓝调 发表于 2020-4-3 15:23
public function render($request, Exception $exception)
        {
           if ($exception instanceof ModelNotFoundException) {
               return response()->json([
                   'error' => 'Resource not found.'
               ],404);
           }
           return parent::render($request, $exception);
        }


删除if判断即可
 楼主| Samding 发表于 2020-4-3 15:31
琴似蓝调 发表于 2020-4-3 15:23
public function render($request, Exception $exception)
        {
           if ($exception instanc ...

image.png
image.png
删掉了还是和之前一样呢
琴似蓝调 发表于 2020-4-3 15:38
琴似蓝调 发表于 2020-4-3 15:39
你的操作真的是让我狠吃惊。。。。
winlans 发表于 2020-4-3 15:42
[PHP] 纯文本查看 复制代码
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Article;

class ArticleController extends Controller
{
    public function index()
    {
        return Article::all();
    }

    public function show($id)
    {
        if($article = Article::find($id)){
           return response()->json($article);
        }

        return response()->json(['error'=> 'resource not found'], 404);
    }

    public function store(Request $request)
    {
        return Article::create($request->all());
    }

    public function update(Request $request, $id)
    {
        $article = Article::findOrFail($id);
        $article->update($request->all());

        return $article;
    }

    public function delete(Request $request, $id)
    {
        $article = Article::findOrFail($id);
        $article->delete();

        return 204;
    }
}
winlans 发表于 2020-4-3 15:45
查询数据库不存在, 并不会出现异常, 所以去异常那里处理本身就是不对的, 再者, 你如果写接口,就应该有规范, 你现在这种格式返回是不行的。 建议看看接口规范。 猜你应该是新手
唯一丶 发表于 2020-4-3 15:45
本帖最后由 唯一丶 于 2020-4-3 15:47 编辑

如果你要在异常处理器中处理的话,
public function show($id)
{
    return Article::find($id);
}

这里就应该使用

public function show($id)
{
    return Article::findOrFail($id);
}

这样当不存在时才会抛出模型不存在异常,Model::find($id) 如果不存在,返回的是 null
快速入门

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
Samding + 1 + 1 谢谢

查看全部评分

 楼主| Samding 发表于 2020-4-3 16:05
唯一丶 发表于 2020-4-3 15:45
如果你要在异常处理器中处理的话,
[md]
```php

懂了,终于搞定了,谢谢
 楼主| Samding 发表于 2020-4-3 16:12
本帖最后由 Samding 于 2020-4-3 16:15 编辑
琴似蓝调 发表于 2020-4-3 15:38
51-53也屏蔽掉,,,

这样直接凉了呀,52也屏蔽掉还是返回空呀
image.png
image.png
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 18:45

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表