国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

五分鐘入門 Dingo API

Paul_King / 1627人閱讀

摘要:雖然這個方案的目標是盡可能保持靈活性,但它仍然不能涵蓋所有情況并解決所有問題。這個是調度器的,并提供了一些好用的輔助方法。如果有什么問題或者文章有哪些錯誤,請在評論區回復,及時阻止我誤導他人。

基于 https://laravel-china.org/doc... 文檔更簡潔的描述Dingo,直戳重點,注重實踐
概述

Dingo API幫助您輕松快速地構建自己的API。雖然這個方案的目標是盡可能保持靈活性,但它仍然不能涵蓋所有情況并解決所有問題。

安裝

將以下代碼加入到composer.json中,并執行composer update 或 composer install

"require": {
    "dingo/api": "2.0.0-alpha1"
}
Laravel

發布配置文件,執行此命令后會在config目錄下生成api.php配置文件

php artisan vendor:publish --provider="DingoApiProviderLaravelServiceProvider"
Lumen
Lumen

如果是你使用的lumen,因lumen沒有vendor命令,請打開 bootstrap/app.php 并注冊服務提供者:

$app->register(DingoApiProviderLumenServiceProvider::class);
Facade

API 自帶了兩個 Facade,你可以酌情使用。

DingoApiFacadeAPI

這個是調度器的 Facade ,并提供了一些好用的輔助方法。

DingoApiFacadeRoute

你可以使用這個 Facade 來獲取 API 的當前路由、請求、檢查當前路由的名稱等。

你可以在config/app.php aliases數組內注冊Facade

"aliases" => [
    ...
    "API"          => DingoApiFacadeAPI::class,
    "ApiRoute"     => DingoApiFacadeRoute::class,
],
配置

在.env文件中配置你的Dingo API

API_STANDARDS_TREE

API_SUBTYPE

API_PREFIX

API_VERSION

API_NAME

API_CONDITIONAL_REQUEST

API_STRICT

API_DEBUG

API_DEFAULT_FORMAT

API_STANDARDS_TREE

Standards Tree 標準樹

未注冊的樹(x)主要表示本地和私有環境

私有樹(prs)主要表示沒有商業發布的項目

供應商樹(vnd)主要表示公開發布的項目

是一種概念上的東西,類似與git的分支,如果正常開發就按照 x,prs,vnd 的描述來填寫即可。

API_SUBTYPE

在請求header中需要用到他

API_PREFIX

地址的前綴,如果不需要請填寫 "/"

API_VERSION

接口的版本,填寫后是默認訪問的版本

API_NAME

接口的名稱,用于生成api文檔,其他地方不使用

API_CONDITIONAL_REQUEST
條件請求默認為開啟狀態,這有利于客戶端的緩存機制在可能的情況下緩存 API 請求。
API_STRICT

強制每次請求必須帶版本,既

Accept:application/vnd.{API_SUBTYPE}.v2+json
API_DEBUG

是否開啟調試,開啟后訪問api會看到

API_DEFAULT_FORMAT

返回的類型,一般都是json

一個栗子
API_STANDARDS_TREE=vnd
API_SUBTYPE=catering
API_PREFIX=/
API_VERSION=v1
API_NAME="My API"
API_CONDITIONAL_REQUEST=false
API_STRICT=false
API_DEBUG=true
API_DEFAULT_FORMAT=json
使用
這里與實際業務結合來講解
表結構 member
CREATE TABLE `member` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `tel` bigint(20) DEFAULT NULL COMMENT "手機號碼",
  `password` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT "登錄密碼",
  `status` tinyint(4) NOT NULL DEFAULT "0" COMMENT "賬號狀態 0:正常",
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `member_tel_unique` (`tel`),
  KEY `member_tel_status_index` (`tel`,`status`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
member_data
CREATE TABLE `member_data` (
  `member_id` bigint(20) NOT NULL COMMENT "用戶編碼",
  `sex` enum("0","1","2") COLLATE utf8mb4_unicode_ci NOT NULL COMMENT "性別 0=>女生 1=>男生 2=>未知",
  `nick_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT "姓名/昵稱",
  `img` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT "用戶頭像",
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  UNIQUE KEY `member_data_member_id_unique` (`member_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
新建一個路由
$api = app ("DingoApiRoutingRouter");
$api->post ("user/register", "AppApiControllersUserController@register");
});
創建自定義響應
 200,
                "data"        => $data,
            ];
        }
        
        public static function error($message = "")
        {
            return [
                "status_code" => 0,
                "message"     => $message,
            ];
        }
        
        public static function return($statusCode, $message, $data = [])
        {
            return [
                "status_code" => $statusCode,
                "message"     => $message,
                "data"        => $data,
            ];
        }
    }
創建控制器
request = $request;
            
            $this->userService = $userService;
        }
        
        public function register()
        {
            $result = $this->userService->register ($this->request->all ());
            
            if ($result["status_code"] == 200) {
                return $this->response->array (Response::return (200, "注冊成功", [
                    "user_id" => $result["data"],
                ]));
            }
            
            return $this->response->error ($result["message"], 500);
        }
    }
創建服務
member = $member;
        }
        
        public function register($data)
        {
            try {
                return Response::success ((new CreateUser())->execute ($data));
            } catch (Exception $e) {
                return Response::error ($e->getMessage ());
            }
        }
    }
創建動作
tel      = $data["tel"];
            $member->password = md5 ($data["password"]);
            $result           = $member->save ();
            
            if (!$result) {
                throw new Exception("注冊失敗");
            }
            
            $memberData            = new MemberData();
            $memberData->member_id = $member->id;
            $memberData->sex       = "2";
            $memberData->nick_name = "";
            $memberData->img       = "";
            $memberData->save ();
            
            return $member->id;
        }
    }
請求
 "http://api.c.com/user/register",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => "-----011000010111000001101001
Content-Disposition: form-data; name="tel"

18510362698
-----011000010111000001101001
Content-Disposition: form-data; name="password"

zjk1221
-----011000010111000001101001--",
  CURLOPT_HTTPHEADER => array(
    "accept: application/vnd.catering.v1+json",
    "cache-control: no-cache",
    "content-type: multipart/form-data; boundary=---011000010111000001101001",
    "postman-token: e7cf665f-3698-217a-cd71-35c3a44f42bc"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
疑難雜癥

列出一些常見問題及解決方案

版本區分后如何訪問

API_VERSION 設置的版本只是默認訪問版本,如果想訪問其他版本,需在header內添加

Accept:application/vnd.{API_SUBTYPE}.v2+json
不想添加前綴怎么辦
API_PREFIX=/

API_PREFIX不能為空,必須填寫內容,那理所當然的/一定是正確的

致謝

感謝你看到這里,以上為個人研究開發的總結以及代碼,如果可以幫到你,我很高興。如果有什么問題或者文章有哪些錯誤,請在評論區回復,及時阻止我誤導他人。謝謝

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/28960.html

相關文章

  • laravel5.5+dingo+JWT開發后臺API

    摘要:我的博客中文文檔中使用輔助文章參考這篇文章基本就能搭建出環境,我使用的版本跟他一樣,不知道別的版本有啥大的區別,但是網上找的其他一些文章使用的是舊的版本,封裝的東西路徑可能不一樣,可能會保錯,有些文檔還說要手動添加和,其實新版本不需要。 我的github博客:https://zgxxx.github.io/ dingo api 中文文檔: https://www.bookstack....

    printempw 評論0 收藏0
  • dingo/api 使用

    摘要:快速使用安裝添加服務提供者打開向數組中添加其他的服務提供者添加打開向數組中添加和其他的添加自定義配置文件執行命令結果配置你的文件,把下面的內容添加你的文件里到這里,基礎配置基本完事了,下面創建一個來看看效果創建到你的路由文件里面,把下面 快速使用 安裝 composer require dingo/api:1.0.x@dev 添加dingo服務提供者 打開 config/app.php...

    zhoutao 評論0 收藏0
  • Laravel Api 開發系列 - Dingo API 的使用

    摘要:源碼使用本文使用的數據庫與基礎篇相同,故不再重復說明。使用的用法與之前的自定義用法類似,甚至更加簡單。首先定義路由如果要查看路由,需要使用創建控制器需要使用這個。 源碼 使用 Dingo Api 本文使用的數據庫與基礎篇相同,故不再重復說明。 初始化 安裝 $ composer require dingo/api:1.0.x@dev 注冊 /config/app.php provide...

    jlanglang 評論0 收藏0
  • Laravel+Dingo/Api 自定義響應

    摘要:在最近的開發開發項目中,我使用了這個第三方庫。是個很強大的庫,但在開發的過程中,需要自定義響應字段。剛開始使用時,返回如下手機號格式不正確這是輸入字段驗證錯誤時,返回的結果。尤其是,需要對每一個對象進行新建,然后序列化。 在最近的開發開發項目中,我使用了Dingo/Api這個第三方Api庫。Dingo是個很強大的Api庫, 但在開發的過程中,需要自定義響應字段。 剛開始使用Ding/A...

    xcold 評論0 收藏0
  • laravel中Dingo api如何Custom ExceptionHandler

    摘要:背景在近期使用處理接口時,發現本身中無法捕獲異常。后來查閱資料發現,接管了請求的異常處理。導致無法自定義錯誤返回,很是頭疼。最后在的找到了處理方法。 背景 在近期使用Dingo api處理接口時,發現laravel本身appExceptionsHandler中無法捕獲異常。 后來查閱資料發現,Dingo api接管了api請求的異常處理。導致無法自定義錯誤返回,很是頭疼。 最后在di...

    Ku_Andrew 評論0 收藏0

發表評論

0條評論

Paul_King

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<