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

資訊專欄INFORMATION COLUMN

五分鐘入門 Dingo API

Paul_King / 1631人閱讀

摘要:雖然這個(gè)方案的目標(biāo)是盡可能保持靈活性,但它仍然不能涵蓋所有情況并解決所有問題。這個(gè)是調(diào)度器的,并提供了一些好用的輔助方法。如果有什么問題或者文章有哪些錯(cuò)誤,請(qǐng)?jiān)谠u(píng)論區(qū)回復(fù),及時(shí)阻止我誤導(dǎo)他人。

基于 https://laravel-china.org/doc... 文檔更簡(jiǎn)潔的描述Dingo,直戳重點(diǎn),注重實(shí)踐
概述

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

安裝

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

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

發(fā)布配置文件,執(zhí)行此命令后會(huì)在config目錄下生成api.php配置文件

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

如果是你使用的lumen,因lumen沒有vendor命令,請(qǐng)打開 bootstrap/app.php 并注冊(cè)服務(wù)提供者:

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

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

DingoApiFacadeAPI

這個(gè)是調(diào)度器的 Facade ,并提供了一些好用的輔助方法。

DingoApiFacadeRoute

你可以使用這個(gè) Facade 來獲取 API 的當(dāng)前路由、請(qǐng)求、檢查當(dāng)前路由的名稱等。

你可以在config/app.php aliases數(shù)組內(nèi)注冊(cè)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 標(biāo)準(zhǔn)樹

未注冊(cè)的樹(x)主要表示本地和私有環(huán)境

私有樹(prs)主要表示沒有商業(yè)發(fā)布的項(xiàng)目

供應(yīng)商樹(vnd)主要表示公開發(fā)布的項(xiàng)目

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

API_SUBTYPE

在請(qǐng)求header中需要用到他

API_PREFIX

地址的前綴,如果不需要請(qǐng)?zhí)顚?"/"

API_VERSION

接口的版本,填寫后是默認(rèn)訪問的版本

API_NAME

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

API_CONDITIONAL_REQUEST
條件請(qǐng)求默認(rèn)為開啟狀態(tài),這有利于客戶端的緩存機(jī)制在可能的情況下緩存 API 請(qǐng)求。
API_STRICT

強(qiáng)制每次請(qǐng)求必須帶版本,既

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

是否開啟調(diào)試,開啟后訪問api會(huì)看到

API_DEFAULT_FORMAT

返回的類型,一般都是json

一個(gè)栗子
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
使用
這里與實(shí)際業(yè)務(wù)結(jié)合來講解
表結(jié)構(gòu) member
CREATE TABLE `member` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `tel` bigint(20) DEFAULT NULL COMMENT "手機(jī)號(hào)碼",
  `password` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT "登錄密碼",
  `status` tinyint(4) NOT NULL DEFAULT "0" COMMENT "賬號(hào)狀態(tài) 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;
新建一個(gè)路由
$api = app ("DingoApiRoutingRouter");
$api->post ("user/register", "AppApiControllersUserController@register");
});
創(chuàng)建自定義響應(yīng)
 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,
            ];
        }
    }
創(chuàng)建控制器
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, "注冊(cè)成功", [
                    "user_id" => $result["data"],
                ]));
            }
            
            return $this->response->error ($result["message"], 500);
        }
    }
創(chuàng)建服務(wù)
member = $member;
        }
        
        public function register($data)
        {
            try {
                return Response::success ((new CreateUser())->execute ($data));
            } catch (Exception $e) {
                return Response::error ($e->getMessage ());
            }
        }
    }
創(chuàng)建動(dòng)作
tel      = $data["tel"];
            $member->password = md5 ($data["password"]);
            $result           = $member->save ();
            
            if (!$result) {
                throw new Exception("注冊(cè)失敗");
            }
            
            $memberData            = new MemberData();
            $memberData->member_id = $member->id;
            $memberData->sex       = "2";
            $memberData->nick_name = "";
            $memberData->img       = "";
            $memberData->save ();
            
            return $member->id;
        }
    }
請(qǐng)求
 "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;
}
疑難雜癥

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

版本區(qū)分后如何訪問

API_VERSION 設(shè)置的版本只是默認(rèn)訪問版本,如果想訪問其他版本,需在header內(nèi)添加

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

API_PREFIX不能為空,必須填寫內(nèi)容,那理所當(dāng)然的/一定是正確的

致謝

感謝你看到這里,以上為個(gè)人研究開發(fā)的總結(jié)以及代碼,如果可以幫到你,我很高興。如果有什么問題或者文章有哪些錯(cuò)誤,請(qǐng)?jiān)谠u(píng)論區(qū)回復(fù),及時(shí)阻止我誤導(dǎo)他人。謝謝

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/28960.html

相關(guān)文章

  • laravel5.5+dingo+JWT開發(fā)后臺(tái)API

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

    printempw 評(píng)論0 收藏0
  • dingo/api 使用

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

    zhoutao 評(píng)論0 收藏0
  • Laravel Api 開發(fā)系列 - Dingo API 的使用

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

    jlanglang 評(píng)論0 收藏0
  • Laravel+Dingo/Api 自定義響應(yīng)

    摘要:在最近的開發(fā)開發(fā)項(xiàng)目中,我使用了這個(gè)第三方庫(kù)。是個(gè)很強(qiáng)大的庫(kù),但在開發(fā)的過程中,需要自定義響應(yīng)字段。剛開始使用時(shí),返回如下手機(jī)號(hào)格式不正確這是輸入字段驗(yàn)證錯(cuò)誤時(shí),返回的結(jié)果。尤其是,需要對(duì)每一個(gè)對(duì)象進(jìn)行新建,然后序列化。 在最近的開發(fā)開發(fā)項(xiàng)目中,我使用了Dingo/Api這個(gè)第三方Api庫(kù)。Dingo是個(gè)很強(qiáng)大的Api庫(kù), 但在開發(fā)的過程中,需要自定義響應(yīng)字段。 剛開始使用Ding/A...

    xcold 評(píng)論0 收藏0
  • laravel中Dingo api如何Custom ExceptionHandler

    摘要:背景在近期使用處理接口時(shí),發(fā)現(xiàn)本身中無法捕獲異常。后來查閱資料發(fā)現(xiàn),接管了請(qǐng)求的異常處理。導(dǎo)致無法自定義錯(cuò)誤返回,很是頭疼。最后在的找到了處理方法。 背景 在近期使用Dingo api處理接口時(shí),發(fā)現(xiàn)laravel本身appExceptionsHandler中無法捕獲異常。 后來查閱資料發(fā)現(xiàn),Dingo api接管了api請(qǐng)求的異常處理。導(dǎo)致無法自定義錯(cuò)誤返回,很是頭疼。 最后在di...

    Ku_Andrew 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

Paul_King

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<