簡(jiǎn)介
Laravel是一種流行的PHP框架,用于開發(fā)和構(gòu)建Web應(yīng)用程序和API。作為一個(gè)開發(fā)者,總有一天你需要?jiǎng)?chuàng)建自己的API,或者消費(fèi)一個(gè)外部API,并與之交互。這是一個(gè)你不能逃避的階段,因此作為L(zhǎng)aravel開發(fā)者,我們需要了解如何消費(fèi)和與API進(jìn)行交互。
API是Application Programming Interface的縮寫,它可以實(shí)現(xiàn)很多強(qiáng)大的功能,這也是開發(fā)者接受它的原因之一。
那么,不浪費(fèi)太多時(shí)間,我們直接進(jìn)入本教程。
前提條件
創(chuàng)建和交互API的先決條件如下:
PHP:確保你了解PHP并且精通面向?qū)ο缶幊蹋∣OP)。Laravel是一個(gè)基于PHP的框架,所以你需要在系統(tǒng)上安裝PHP。注意:你的系統(tǒng)上應(yīng)安裝PHP版本大于7.8。
Composer:Composer是一個(gè)PHP的依賴管理工具。它用于管理和安裝Laravel需要的依賴項(xiàng)。你的電腦上必須設(shè)置好Composer。
Web服務(wù)器:為了提供Laravel應(yīng)用程序,你需要一個(gè)像Xampp或Wamp服務(wù)器這樣的Web服務(wù)器。這兩個(gè)服務(wù)器都支持使用MySQL數(shù)據(jù)庫(kù)。
滿足這些要求后,你就可以繼續(xù)使用Laravel交互API了:
現(xiàn)在你準(zhǔn)備好開始了!
分步流程:使用 Laravel 交互和使用 API
要使用 Laravel 進(jìn)行交互和使用 API,我將在下面向您展示兩個(gè)步驟:
使用 API 的兩個(gè)步驟**
第一步是使用免費(fèi)的 API,使用 來(lái)routes/web.php交互和使用 API。以下是實(shí)現(xiàn)這一目標(biāo)的步驟。
步驟1:安裝 Laravel
打開終端并運(yùn)行以下命令來(lái)創(chuàng)建新的 Laravel 項(xiàng)目:
作曲家創(chuàng)建項(xiàng)目 --prefer-dist laravel/laravel my-API-project
切換到項(xiàng)目目錄:
cd my-api-項(xiàng)目
步驟2:獲取API
為了這個(gè)項(xiàng)目,我們將使用我從Free API *****獲取的免費(fèi)API,你可以從那里或任何其他免費(fèi)API網(wǎng)站獲得你自己的API。我們將使用一個(gè)隨機(jī)笑話API。
(Free API:https://apipheny.io/free-api/)(隨機(jī)笑話API:https://official-joke-api.appspot.com/random_joke)
步驟3:訪問(wèn)web.php
訪問(wèn)您剛創(chuàng)建的項(xiàng)目中的routes/web.php:
訪問(wèn)您
routes/web.php
剛剛創(chuàng)建的項(xiàng)目:使用創(chuàng)建視圖來(lái)
Route::get()
交互和使用 API。我們將使用
下面是您將在routes/web.php中編碼的代碼片段:
<?php use Illuminate\Support\Facades\Route; use Illuminate\Support\Facades\Http; Route::get('/', function(){ $response = Http::get('https://official-joke-api.appspot.com/random_joke'); $data = $response->json(); return view('welcome', ["type" => $data['type']], ["setup"=> $data['setup']], ); });
總之,此代碼定義了一條路由,在訪問(wèn)該路由時(shí),請(qǐng)求 API 獲取隨機(jī)笑話。然后,它呈現(xiàn)一個(gè)名為“welcome”的視圖,并將檢索到的笑話數(shù)據(jù)傳遞給創(chuàng)意以進(jìn)行顯示或進(jìn)一步處理。請(qǐng)注意,API 返回可擴(kuò)展標(biāo)記語(yǔ)言 (XML) 或 JavaScript 對(duì)象表示法 (JSON)。
步驟四:在您的視圖中顯示 API
現(xiàn)在查看這個(gè) API,我的觀點(diǎn)是**welcome.blade.php**我們將在 HTML 標(biāo)記中回顯 API 的值,它將在瀏覽器上顯示 API 的資源。讓我們舉一個(gè)例子來(lái)說(shuō)明我所說(shuō)的內(nèi)容,而不浪費(fèi)您太多時(shí)間。
下面**views/welcome.blade.php**是以下代碼片段,用于輸出我們之前在**routes/web.php**文件中編寫的內(nèi)容。我們使用**{{ }}**語(yǔ)法在生成的 HTML 中輸出變量的值。
<!DOCTYPE html> <html lang="{{ str_replace('_', '-', app()->getLocale()) }}"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>API</title> <!-- Fonts --> <link href="https://fonts.googleapis.com/css2?family=Nunito:wght@400;600;700&display=swap" rel="stylesheet"> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"> </head> <body> <div class="container my-3"> <div class="row justify-content-center"> <div> <div class="card shadow" style="width: 18rem;"> <div> <h3 class="fw-bold text-uppercase">{{ $type }}</h3> <p class="card-text lead text-muted">{{ $setup }}</p> </div> </div> </div> </div> </div> </div> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"></script> </body> </html>
注意:在上面的代碼片段中,我們使用 Bootstrap 5 來(lái)獲得更好的視圖,每當(dāng)您在瀏覽器中刷新頁(yè)面時(shí),輸出都會(huì)發(fā)生變化。下面是我們所做的事情。
第二種方法是通過(guò)密鑰使用 API**app\Http\controllers\**來(lái)交互和使用 API。以下是實(shí)現(xiàn)這一目標(biāo)的步驟。
首先,訪問(wèn)**routes/web.php**
創(chuàng)建一條路線,將您帶到所需的控制器。
訪問(wèn) web.php 文件后,您將編寫一行代碼,該代碼將同時(shí)與控制器和 API 進(jìn)行交互。
下面是您將在您的代碼中編寫的代碼片段**routes/web.php**
<?php use Illuminate\Support\Facades\Route; use App\Http\Controllers\ConsumeController; /* |-------------------------------------------------------------------------- | Web Routes |-------------------------------------------------------------------------- | | 您可以在此處為您的應(yīng)用程序注冊(cè)網(wǎng)絡(luò)路由。 這些 | 路由由 RouteServiceProvider 加載,所有路由都會(huì) | 被分配到“web”中間件組。 做一些偉大的事情! | */ Route::get('/consume', [ConsumeController::class,'index']);
上面的代碼代碼片段是按照我的方式命名的,因此您可以自由地使用您的命名約定。
為了制作你的控制器,你需要寫:
php artisan make:controller ConsumeController
然后訪問(wèn)**app\http\controllers\ConsumeController**您的文件夾目錄,然后您將看到一個(gè)名為的文件,**ConsumeController.php**打開該文件您將看到這樣的代碼片段。
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class ConsumeController extends Controller { // }
因?yàn)槲覀儗⒃谶@個(gè)控制器中與 API 進(jìn)行交互,所以我們需要做的是在上面添加一些代碼片段。我們將在上面添加的代碼片段是代碼,它將允許我們?cè)诖a中使用命名空間Http中的類。 下面是放置在類控制器名稱之前的代碼片段。Illuminate\Support\Facades
<?php use Illuminate\Support\Facades\Http; //到目前為止,您的代碼如下所示 <?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\Http; class ConsumeController extends Controller { // }
其次,您將創(chuàng)建一個(gè)包含所有 API 交互的函數(shù)。在這種情況下,我們將使用**index**命名約定來(lái)命名我們的流程。
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\Http; class ConsumeController extends Controller { public function index(){ // } }
現(xiàn)在,接下來(lái)要做的就是獲取 API 和 API 密鑰并將它們存儲(chǔ)在變量中。
我們的變量的名稱是**$apiKey**,**$apiUrl**下面是如何將 API 存儲(chǔ)在變量中。
$apiKey = 'test_tf5WlMc5yVwKWk6dsQoeS4Qmz9mCkk8rZVnzCjjZ'; $apiUrl = 'https://api.nettoolkit.com/v1/account/test-api-keys';
將 API 存儲(chǔ)在變量中的主要目的是讓您能夠單獨(dú)調(diào)用。
我們將獲取 API 的 HTTP,它的作用是讓您能夠從 Laravel 項(xiàng)目鏈接到指定的 API 和 apiKey。
下面是我不久前解釋過(guò)的一個(gè)例子!
$response = Http::get($apiUrl, [ 'api_key' => $apiKey, // Add other parameters as needed ]);
我們將**HTTP**類保存在一個(gè)名為的變量中**$reponse**,因此我們想要獲取存儲(chǔ) API 的變量。
拿到之后我們就做這樣的事情吧!
$data = $reponse->json();
這意味著來(lái)自 HTTP 的結(jié)構(gòu)化數(shù)據(jù)**$response**被分配給此代碼中的變量**$data**,并且 JSON 格式被轉(zhuǎn)換并處理為有用的對(duì)象或數(shù)組以進(jìn)行進(jìn)一步的操作和處理。
然后我們重定向到我們想要 API 顯示的位置,在我們的例子中,下面的 * **` view/consume.blade.php關(guān)鍵字*` 就是一個(gè)示例。 to redirect to this page by using the return
return view('consume', ['data' => $data]);
我們?cè)诒竟?jié)中討論的只是整個(gè)控制器,決定一點(diǎn)一點(diǎn)地打破它。
下面是代碼片段。
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\Http; class ContentController extends Controller { public function index() { $apiKey = 'test_tf5WlMc5yVwKWk6dsQoeS4Qmz9mCkk8rZVnzCjjZ'; $apiUrl = 'https://api.nettoolkit.com/v1/account/test-api-keys'; $response = Http::get($apiUrl, [ 'api_key' => $apiKey, // 根據(jù)需要添加其他參數(shù) ]); $data = $response->json(); return view('consume', ['data' => $data]); } }
運(yùn)行此代碼后,您將轉(zhuǎn)到視圖并查找內(nèi)部,**consume.blade.php**添加下面的代碼片段以便能夠在瀏覽器中查看某些內(nèi)容。
<h1>API Data:</h1> <pre> {{ json_encode($data, JSON_PRETTY_PRINT) }} </pre>
完成上述任務(wù)后,刷新頁(yè)面,您將在屏幕上看到以下內(nèi)容。
我們將更多地討論 API 的座位緊張。
常問(wèn)問(wèn)題
什么是 Laravel API?
當(dāng)我們談?wù)摃r(shí),Laravel API,我們粗略地談?wù)?Laravel 框架提供的 API(軟件編程接口)改進(jìn)工具。允許外部程序和 Laravel 軟件之間交互的一組路由和策略在 Laravel 上下文中稱為 API。
什么是 RESTFUL API?
稱為 RESTful API(代表性狀態(tài)切換 API)的架構(gòu)布局方法用于創(chuàng)建網(wǎng)絡(luò)程序。它是一種創(chuàng)建遵循特定建議和邊界的 Web 產(chǎn)品的方法,從而產(chǎn)生可擴(kuò)展、無(wú)狀態(tài)且易于應(yīng)用的 Web 產(chǎn)品。資產(chǎn)是 API 可以訪問(wèn)的事物或?qū)嶓w,是RESTful API 的基礎(chǔ)。
RESTful API 很受歡迎,因?yàn)樗鼈儜?yīng)用起來(lái)很流暢、可擴(kuò)展并且適用于許多客戶端。它們現(xiàn)在充當(dāng)創(chuàng)建網(wǎng)絡(luò)產(chǎn)品的事實(shí)上的企業(yè)總管,允許跨不同系統(tǒng)和操作系統(tǒng)的兼容性。
JSON 和 XML 有什么區(qū)別?
盡管 XML 和 JSON 都是常用的數(shù)據(jù)傳輸編解碼器,但它們?cè)谡Z(yǔ)法和功能方面存在差異。JSON 是一種 JavaScript 項(xiàng)目符號(hào) XML 是一種可擴(kuò)展標(biāo)記語(yǔ)言。
請(qǐng)注意:存在大量的變化,但是,我們只會(huì)說(shuō)其中的一些。
接下來(lái)是 JSON 和 XML 之間的主要區(qū)別:
清晰度: JSON 具有與 JavaScript 項(xiàng)目一樣干凈且可識(shí)別的形狀,因此對(duì)于人類來(lái)說(shuō)識(shí)別起來(lái)不太復(fù)雜。由于其基于標(biāo)簽的結(jié)構(gòu),XML 有時(shí)會(huì)變得更加冗長(zhǎng)和復(fù)雜,從而使其更難以閱讀。
統(tǒng)計(jì)類型:** JSON 僅支持一小部分統(tǒng)計(jì)類型,包括字符串、數(shù)字、布爾值、數(shù)組、對(duì)象和空值。默認(rèn)情況下,XML 將所有信息轉(zhuǎn)換為文本,并且需要顯式類型定義。
結(jié)論
最后,我們到了本教程的結(jié)尾。希望您能夠從中獲取大量?jī)r(jià)值。簡(jiǎn)而言之,我們已經(jīng)了解了如何設(shè)置 Laravel 項(xiàng)目并與 API 交互。
筆記!Laravel 提供了一個(gè)強(qiáng)大的框架來(lái)創(chuàng)建 API 并與之交互,為開發(fā)人員提供了一種無(wú)縫且高效的方式來(lái)構(gòu)建強(qiáng)大的 Web 應(yīng)用程序。
憑借其全面的功能和直觀的語(yǔ)法,Laravel 簡(jiǎn)化了設(shè)計(jì)、實(shí)現(xiàn)和管理 API 的過(guò)程。使用 Laravel,開發(fā)人員可以輕松創(chuàng)建 API 路由、定義控制器并處理 HTTP 請(qǐng)求和響應(yīng)。
該框架的內(nèi)置身份驗(yàn)證和授權(quán)機(jī)制可確保對(duì) API 端點(diǎn)的安全訪問(wèn),從而使開發(fā)人員能夠?qū)τ脩魴?quán)限進(jìn)行細(xì)粒度控制。文章來(lái)源:http://www.zghlxwxcb.cn/article/394.html
文章來(lái)源地址http://www.zghlxwxcb.cn/article/394.html
到此這篇關(guān)于Laravel 的高效 API 交互和使用:初學(xué)者指南的文章就介紹到這了,更多相關(guān)內(nèi)容可以在右上角搜索或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!