首页 文章

Laravel 5.4 API不在Postman中返回JSON

提问于
浏览
1

我创建了一个新的Laravel 5.4项目,创建了模型'Recipe',迁移表'recipes'并将路由添加到'Api.php' . 但是当在Postman中测试我的API时,我获得了一个Html文件而不是获得Json响应 .

以下是根据以下文件的代码:

API.php路由文件

<?php

use Illuminate\Http\Request;

Route::post('/recipe', 'RecipeController@postRecipe')-
>name('get_recipe');
Route::get('/recipe', 'RecipeController@getRecipe')-
>name('post_recipe');

RecipeController

namespace App\Http\Controllers;


use App\Recipe;
use Illuminate\Http\Request;

class RecipeController extends Controller {

public function postRecipe(Request $request)
{
    $recipe = new Recipe();
    $recipe->content = $request->input('content');
    $recipe->save();
    return response()->json(['recipe' => $recipe], 201);
}

public function getRecipe()
{
    return response()->json(['message' => 'Got a Response'],200);
}

食谱模型

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Recipe extends Model
{
protected $fillable = ['content'];
}

迁移迁移并创建表'食谱' .

然后在邮递员中我尝试向我的网址发送'get'请求:'recipeapi.dev/api/recipe'但获取html代码 .

当我尝试向我的网址发送'发布'请求时,会发生同样的情况:'recipeapi.dev/api/recipe' . OFC对于帖子请求我包括 Headers :'Content-Type''application / json' . 仍然得到相同的HTML代码....

使用Homestead / vagrant进行laravel,如果我使用浏览器进入默认路线:'/'它将我带到欢迎Laravel页面 .

不知道我持续得到这些HTML代码的问题,而不是我的控制器的Json数据 .

这是邮递员的数据与数据....

Get request with Postman

Post request with Postman

有人知道发生了什么事吗?为什么我的get和post请求中没有从我的api获取Json数据?

多谢你们!

4 回答

  • 1

    返回的http状态是404 .

    响应的正文似乎是一个HTML页面(404错误页面?)

    服务器无法识别URL .

    我会检查以确保您使用正确的URL .

  • 0

    看起来它甚至找不到路线 .

    请用此替换 api.php 文件,然后重试 GET 请求:

    <?php
    
    Route::get('recipe', 'RecipeController@getRecipe')->name('get_recipe');
    Route::post('recipe', 'RecipeController@postRecipe')->name('post_recipe');
    
  • 0

    在测试API时,您应该关闭Laravel Debugbar . 或者您可以为所有API路线关闭它 .

    这是来自here的Laravel 5的解决方案:

    <?php
    
    namespace App\Http\Middleware;
    
    use Closure;
    use Illuminate\Http\JsonResponse;
    
    class ProfileJsonResponse
    {
        public function handle($request, Closure $next)
        {
            $response = $next($request);
    
            if (
                $response instanceof JsonResponse &&
                app()->bound('debugbar') &&
                app('debugbar')->isEnabled() &&
                is_object($response->getData())
            ) {
                $response->setData($response->getData(true) + [
                    '_debugbar' => app('debugbar')->getData(),
                ]);
            }
    
            return $response;
        }
    }
    
  • 0

    我感谢你的帮助!你们非常友好地从繁忙的日程中抽出时间 .

    我终于解决了这个问题 . 我觉得现在很傻 . 因为我正在使用Homestead,所以我必须在宅基地目录中做一个流浪汉命令'vagrant provision',一切正常 .

    我似乎经常得到这个问题,特别是当我创建授权的php artisan make:auth'时,我必须在其中制作一个vagrant provision命令以便登录,注册部分等授权显示在网页上 .

    不知道这个问题的原因是什么,但问题解决了 .

    再次感谢大家!欣赏它!

相关问题