iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 21
1

首先來建立 Controller。

  • 建立 Controller

    此處提供一個小技巧,除了建立 Controller 之外,還可以將所有 resource method 一併一起建好,指令為下:

    $ php artisan make:controller PostsController --resource
    

    或者

    $ php artisan make:controller PostsController -r
    

    建立完成後,Controller 內會包含所有 7 個 resource method

    *PostsController.php

    <?php
    
    namespace App\Http\Controllers;
    
    use Illuminate\Http\Request;
    
    class PostsController extends Controller
    {
        /**
         * Display a listing of the resource.
         *
         * @return \Illuminate\Http\Response
         */
        public function index()
        {
            //
        }
    
        /**
         * Show the form for creating a new resource.
         *
         * @return \Illuminate\Http\Response
         */
        public function create()
        {
            //
        }
    
        /**
         * Store a newly created resource in storage.
         *
         * @param  \Illuminate\Http\Request  $request
         * @return \Illuminate\Http\Response
         */
        public function store(Request $request)
        {
            //
        }
    
        /**
         * Display the specified resource.
         *
         * @param  int  $id
         * @return \Illuminate\Http\Response
         */
        public function show($id)
        {
            //
        }
    
        /**
         * Show the form for editing the specified resource.
         *
         * @param  int  $id
         * @return \Illuminate\Http\Response
         */
        public function edit($id)
        {
            //
        }
    
        /**
         * Update the specified resource in storage.
         *
         * @param  \Illuminate\Http\Request  $request
         * @param  int  $id
         * @return \Illuminate\Http\Response
         */
        public function update(Request $request, $id)
        {
            //
        }
    
        /**
         * Remove the specified resource from storage.
         *
         * @param  int  $id
         * @return \Illuminate\Http\Response
         */
        public function destroy($id)
        {
            //
        }
    }
    
    

    Resource controller 的所有 method、HTTP verb、URI 為以下表格 ( 以 post 為例 ):

    method HTTP verb URI

    index|GET|/posts
    show|GET|/posts/{id}
    create|GET|/posts/create
    store|POST|/posts
    edit|GET|/posts/{id}/edit
    update|PUT/PATCH|/posts/{id}
    destroy|DELETE|/posts/{id}

    然而,並非所有的 method 都是我們想要的,在 RESTful API 中,不會存在 create 和 edit method,因為這兩者僅僅只跟前端表格的呈現有關,而開發 API 是屬於純後端的情形,所以自己可以手動將這兩個 method 刪掉。除此之外,當然可以手動新增自己的 method,在此部份我們會手動新增 userPosts method,而其所需代入的參數根據前一篇的 api routes,為 $user_id。

    post 的所有 API 為以下情形:

    *PostsController.php ( 為了簡潔,先把註解去掉 )

    <?php
    
    namespace App\Http\Controllers;
    
    use Illuminate\Http\Request;
    
    class PostsController extends Controller
    {
        public function index()
        {
            //
        }
    
        public function store(Request $request)
        {
            //
        }
    
        public function show($id)
        {
            //
        }
    
        public function update(Request $request, $id)
        {
            //
        }
    
        public function destroy($id)
        {
            //
        }
    
        public function userPosts($user_id)
        {
            //
        }
    }
    

建立完 Controller 之後,由於我們沒有任何的 posts,因此接下來就來實作 store method。

參考資料:

  1. Resource Controller : https://laravel.com/docs/6.x/controllers#resource-controllers

上一篇
Day 20 : 貼文 ( api routes & middleware )
下一篇
Day 22 : 貼文 ( Controller -- store )
系列文
從零開始的Laravel RESTful api30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言