我创建了一个新的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'];
}
迁移迁移并创建表'recipes'。
然后在邮递员中,我尝试向我的网址发送'get'请求:'recipeapi.dev/api/recipe',但获取HTML代码。
当我尝试向我的网址发送'发布'请求时,会发生同样的情况:'recipeapi.dev/api/recipe'。 OFC对于帖子请求我包括标题:'Content-Type''application / json'。仍然得到相同的HTML代码....
使用Homestead / vagrant进行laravel,如果我使用浏览器转到默认路线:'/'它将我带到欢迎的Laravel页面。
不知道我持续获取这些html代码的问题,而不是我控制器的Json数据。
以下是带有数据的邮递员的照片......
任何人都知道发生了什么事?为什么我的get和post请求中没有从我的api获取Json数据?
谢谢大家!
答案 0 :(得分:1)
看起来它甚至找不到路线。
请用此替换您的api.php
文件,然后重试GET
请求:
<?php
Route::get('recipe', 'RecipeController@getRecipe')->name('get_recipe');
Route::post('recipe', 'RecipeController@postRecipe')->name('post_recipe');
答案 1 :(得分: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;
}
}
答案 2 :(得分:0)
返回的http状态为404.
响应正文似乎是一个HTML页面(404错误页面?)
服务器无法识别该URL。
我会检查以确保您使用的是正确的网址。
答案 3 :(得分:0)
感谢您的帮助!你们非常友好地从繁忙的日程中抽出时间。
我终于解决了这个问题。我觉得现在很傻。我只是做了一个流浪汉的命令&#39;流浪儿条款&#39;在宅基地目录中,因为我使用的是Homestead,而且一切正常。
我似乎不时会遇到这个问题,特别是当我创建授权时#39; php artisan make:auth&#39; ,之后我将不得不制作一个vagrant provision命令以便登录,注册部分ect ..授权显示在网页上。
不知道这个问题的原因是什么,但问题已经解决了。
再次感谢大家!欣赏它!
答案 4 :(得分:0)
我有同样的问题。
您应该将这两个标头添加到您的请求中:
Accept: application/json
Content-type: application/json