Begin with Web

先認識一下REST

標準的REST應該像這樣

/{resource}/{id}/{component}

舉個例子

  • /user                   - 使用者列表
  • /user/1               - ID為1的使用者
  • /user/1/picture - ID為1的使用者的照片

主要分為幾種

  • GET
  • POST
  • PUT
  • DELETE

每一個REST方法的參數不外乎兩種

Query or Payload

使用場景

  • GET       - query
  • POST     - payload
  • PUT       - payload
  • DELETE - (None)

當然Laravel也有

先假設已經有基礎知識

我今天要建立routes

routes/web.php

<?php

// 取得user列表
Route::get('user', 'UserController@getUsers');

// 取得user
Route::get('user/{id}', 'UserController@getUser');

// 修改user
Route::put('user/{id}', 'UserController@updateUser');

// 刪除user
Route::delete('user/{id}', 'UserController@deleteUser');

// 或是大雜燴
Route::resource('user', UserController::class);

Wow, 有個特別不一樣

`resource`

是完整CRUD

<?php

namespace App\Http\Controllers;

class UserController extends Controller
{

    public function index()
    {
    }

    public function show($id)
    {
    }

    public function update($id)
    {
    }

    public function destroy($id)
    {
    }

    public function store()
    {
    }
}

如果我今天只要store?

<?php

Route::resource('user', UserController::class, ['only' => 'store'])

再來是status

為了區分邏輯

REST API

一定是依照status區分

只是 GET 一定是200

其他成功的

也都是2xx開頭

譬如

POST / PUT / DELETE

  • 201 - Created (POST專用)
  • 202 - Accepted(PUT/DELETE)
  • 204 - No Content

回 204 不能有response

再來是錯誤訊息

原則來說

錯誤一定都是4xx

除了常見的,還有下列

  • 401 - Unauthorized
  • 409 - Conflict
  • 422 - Unprocessable Enity

會不會有500?

在你無法識別錯誤的時候

To be continued

Made with Slides.com