我是 laravel API 的初学者,我想显示文章列表(方法索引),我已经创建了模型文章,但我不能。
你好,我是 laravel API 的初学者,我想显示文章列表(方法索引),我已经创建了模型文章,但我不能。
文章控制器
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Article;
use App\Http\Resources\Article as ArticleResource;
class ArticleController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$articles= Article::paginate(15);
return ArticleResource::collection($articles);
}
Run Code Online (Sandbox Code Playgroud)
创建表文章
public function up()
{
Schema::create('articles', function (Blueprint $table) {
$table->increments('id');
$table->string('title');
$table->string('body');
$table->timestamps();
});
}
Run Code Online (Sandbox Code Playgroud)
应用服务提供者.php
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Schema;
class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
Schema::defaultStringLength(191);
}
Run Code Online (Sandbox Code Playgroud)
文章TableSeeder
<?php
use Illuminate\Database\Seeder;
class ArticalesTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
factory(App\Article::class,30)->create();
}
}
Run Code Online (Sandbox Code Playgroud)
文章工厂.php
<?php
/* @var $factory \Illuminate\Database\Eloquent\Factory */
use Faker\Generator as Faker;
$factory->define(App\Article::class, function (Faker $faker) {
return [
'title' => $faker->text(50),
'body' => $faker->text(200)
];
});
Run Code Online (Sandbox Code Playgroud)
应用\资源\Article.php
<?php
namespace App\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
class Article extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function toArray($request)
{
return parent::toArray($request);
}
}
Run Code Online (Sandbox Code Playgroud)
数据库播种器.php
<?php
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
$this->call(ArticalesTableSeeder::class);
}
}
Run Code Online (Sandbox Code Playgroud)
路线/api.php
//list
Route::get('articles','ArticleController@index');
//list single
Route::get('article/{id}','ArticleController@show');
//create article
Route::post('article','ArticleController@store');
//update articles
Route::put('article','ArticleController@store');
//delete article
Route::delete('articles','ArticleController@destroy');
Run Code Online (Sandbox Code Playgroud)
Laravel 自动为routes/api.php文件中的路由添加路由前缀/api
您需要向以下人员提出请求:
http://127.0.0.1:8000/api/articles
Run Code Online (Sandbox Code Playgroud)
而不是
http://127.0.0.1:8000/articles
Run Code Online (Sandbox Code Playgroud)
如果您愿意,您可以更改此设置RouteServiceProvider:
https://github.com/laravel/laravel/blob/master/app/Providers/RouteServiceProvider.php#L66-L72