如何在laravel實作縮網址系統-功能實作篇「框架與結構」

更新於 2024/09/05閱讀時間約 1 分鐘

本篇將涵蓋環境設置和基礎結構的搭建,包括 Laravel 框架的初始化、路由設置、資料庫遷移和模型的建立。下篇將進一步討論核心功能的實現,包括 API 的開發和核心邏輯的實作。

raw-image


上篇: 如何在laravel實作縮網址系統-系統架構篇

初始化 Laravel 專案

安裝 Composer


建立 Laravel 專案:

$ composer create-project —prefer-dist laravel/laravel url-shortener
  • url-shortener 是專案名稱,執行此命令後,Laravel 將自動生成專案文件夾並安裝所需的依賴包。


進入專案目錄

$ cd url-shortener


設置環境配置

複製 .env.example 文件並重命名為 .env。

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=url_shortener
DB_USERNAME=root
DB_PASSWORD=yourpassword

設置應用的基本配置信息,例如 APP_NAME 和 APP_URL。


生成應用程序密鑰

$ php artisan key:generate

這將生成並設置一個唯一的應用程序密鑰到 .env 文件中。


建立資料表結構

建立資料表遷移檔案

$ php artisan make:migration create_short_urls_table
  • 這將在 database/migrations 文件夾中生成一個新的遷移文件。


設置資料表遷移

  • 打開剛剛生成的遷移文件,並在其中定義 urls 表的結構。主要包括 id, original_url, short_code, created_at, updated_at 等欄位。


執行資料表遷移

$ php artisan migrate

建立模型與工廠

創建 Eloquent 模型:

$ php artisan make:model Models/ShortUrl
  • 這將在 app/Models 目錄下生成 Url.php 模型文件。


設置模型屬性:

  • 在 Url 模型中,定義可填充的屬性 original_url 和 short_code,以及相關的資料表名稱。


建立工廠類別(這個我們以後會再詳細介紹):

$ php artisan make:factory UrlFactory --model=Url
  • 在工廠文件中,定義如何生成 original_url 和 short_code 的假資料。


設置基本路由和控制器

設置基本路由:

  • 打開 routes/api.php 文件,定義基礎的 API 路由,例如縮短 URL 和查詢短網址的路由。


建立控制器:

$ php artisan make:controller UrlShortenerController
  • 在控制器中定義處理 API 請求的方法,例如生成短網址和查詢短網址的方法。


連接控制器與路由:

  • 將定義好的路由與 UrlController 中的方法連接,使得 API 請求能夠正確地映射到控制器中的具體邏輯。




到目前為止,我們已經完成了 Laravel 框架的初始化、資料庫的設置、模型和控制器的建立,並且基本設置了路由。

這為接下來的實作打下了基礎。在下篇中,我們將進一步實現核心功能,包括短網址的生成、查詢以及相關的 API 開發。

如果有興趣的格友或是路過的朋友,可以嘗試的建立看看~,那我們下篇見

這是一系列以軟體開發為主題的輕鬆分享,內容涵蓋了技術選擇、開發經驗、實戰應用等多方面的議題。無論是如何在眾多框架中做出選擇,還是如何應對技術轉移的挑戰,這裡有幽默、有趣的對話風格,將複雜的技術問題轉化為易懂的故事。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
本文將深入探討如何在 Laravel 中設計縮網址系統的架構,涵蓋數據庫設計、API 設計與核心邏輯。主要介紹系統的核心目標,即將長網址轉換為短網址,並提供查詢和重定向功能。重點在於如何有效設計資料表、優化 API 端點,以及改善系統性能與擴展性。這些設計考慮將有助於實現一個快速而可靠的縮網址服務。
前言 發佈了五篇關於Laravel 的文章後,我就在思考,後面該如何延伸更多的內容,來讓正在學習或是想要學習的格友們更加的深入了解Laravel 的應用,於是我想到那就不如直接來進行專案開發,同時也能在開發的過程中更加laravel的語法以及內容。
Side Project 劃分等級可以幫助你和你的團隊更好地規劃和管理項目。這裡是基於不同團隊規模和開發時程的五個等級: E級 (Easy) D級 (Basic) C級 (Intermediate) B級 (Advanced) A級 (Expert)
進入物件導向設計的實戰階段,我們通過建立人力資源管理功能來實踐理論知識。透過這些實作練習,能夠深化對物件導向概念的理解,並學會如何在實際開發中應用這些概念。
在物件導向程式設計的進階階段,學生將學習繼承、介面、抽象類別等核心概念。繼承允許類別共享屬性和方法,介面確保實現類別提供特定的方法實現,而抽象類別定義了基本結構供子類別擴展。這些知識點有助於提升程式碼的重用性、擴展性和維護性。
本階段深掘PHP中類別與物件的應用,從基本定義到屬性與方法的運用,並特別著重於訪問控制和靜態成員的概念。學生將學會如何有效地利用公開、保護、私有屬性,以及如何在不實例化的情況下透過類別名稱直接訪問靜態屬性和方法,進一步鞏固物件導向程式設計的核心知識。
本文將深入探討如何在 Laravel 中設計縮網址系統的架構,涵蓋數據庫設計、API 設計與核心邏輯。主要介紹系統的核心目標,即將長網址轉換為短網址,並提供查詢和重定向功能。重點在於如何有效設計資料表、優化 API 端點,以及改善系統性能與擴展性。這些設計考慮將有助於實現一個快速而可靠的縮網址服務。
前言 發佈了五篇關於Laravel 的文章後,我就在思考,後面該如何延伸更多的內容,來讓正在學習或是想要學習的格友們更加的深入了解Laravel 的應用,於是我想到那就不如直接來進行專案開發,同時也能在開發的過程中更加laravel的語法以及內容。
Side Project 劃分等級可以幫助你和你的團隊更好地規劃和管理項目。這裡是基於不同團隊規模和開發時程的五個等級: E級 (Easy) D級 (Basic) C級 (Intermediate) B級 (Advanced) A級 (Expert)
進入物件導向設計的實戰階段,我們通過建立人力資源管理功能來實踐理論知識。透過這些實作練習,能夠深化對物件導向概念的理解,並學會如何在實際開發中應用這些概念。
在物件導向程式設計的進階階段,學生將學習繼承、介面、抽象類別等核心概念。繼承允許類別共享屬性和方法,介面確保實現類別提供特定的方法實現,而抽象類別定義了基本結構供子類別擴展。這些知識點有助於提升程式碼的重用性、擴展性和維護性。
本階段深掘PHP中類別與物件的應用,從基本定義到屬性與方法的運用,並特別著重於訪問控制和靜態成員的概念。學生將學會如何有效地利用公開、保護、私有屬性,以及如何在不實例化的情況下透過類別名稱直接訪問靜態屬性和方法,進一步鞏固物件導向程式設計的核心知識。
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
# 如何在1688上找到優質商品進行台灣蝦皮一件代發?🌐 在當今的電商時代,許多台灣的創業者和賣家都在尋找新的方式來擴展他們的業務。其中,利用中國大陸的批發平台1688進行一件代發到台灣蝦皮,已成為一種流行的商業模式。這
Thumbnail
這篇文章介紹了股市隱者的Podcast主題 EP201:如何從股市賺取第一桶金。他分享了賺取第一桶金的兩個錯誤觀念以及如何做到專注本業、研究股票,並省錢累積第一桶金。小茹也分享了自己的累積第一桶金的經驗和建議。文章探討了資金少是否需要考慮資產配置的問題。
Thumbnail
競爭,是我們分出高下、搶奪稀缺資源的關鍵;人生勝利組與敗者的區別常常被簡單化。透過科技公司的角度來看,快速修正和錯誤越多,人才能夠更快地接近理想。除了競爭,更重要的是持續發展、不斷修正方向、不斷創新。最重要的是沒有問題的人生並不會有進步,應該期待充滿好問題的旅程。
Thumbnail
這篇文章探討了自我覺察的重要性,以及如何將注意力收回自己的內在,以搞定自己,達到關係中的平衡。裏面分享了三個心法,包括將注意力放回內在、改變口頭禪以及保持好奇的方式,來幫助讀者搞定自己。透過自我覺察,讓情緒不輕易受外境影響,尋迴心靈的安定,並停止關係中的內耗與對立。
Thumbnail
嗨!朋友們!我們都知道,簡報製作一直都需要很多的細心與耐心。如今隨著簡報模板的不斷更新,我們能參考已經創造出來的圖表樣式,使我們的簡報呈現專業且具有吸引力。因此,今天將介紹兩種最常使用的圖表-時間軸和組織圖,讓大家看看在呈現這兩種圖表時,有哪些不同的方式可以選擇。此外,更提供簡報連結供大家下載使用。
Thumbnail
你是否想要擺脫九點到五點的枯燥工作,成為一個自由的遠端工作者?你是否不想做世俗認定的好工作,而是想要創業當自己的主人,或者創造更多的收入管道?如果你的答案是肯定的,那麼你需要一個讓人印象深刻的個人品牌。
Thumbnail
有求職者問到: 先前有被詢問到「在某專案中投入幾成?幾成是由你自主決策?」, 不知道如何準確應答。因為專案同部門是兩個人負責,所以事情和很多細節都是均分的,投入的努力很難用數字去描述是50%還是100%, 請問針對這種數字量化抽象的問題應該怎麼回答?
Thumbnail
不論你希望以哪一種方式付費支持作者,都能選擇使用「信用卡」完成付款!試試看跟著以下步驟操作,整個過程只需要不到5分鐘的時間就能完成。
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
# 如何在1688上找到優質商品進行台灣蝦皮一件代發?🌐 在當今的電商時代,許多台灣的創業者和賣家都在尋找新的方式來擴展他們的業務。其中,利用中國大陸的批發平台1688進行一件代發到台灣蝦皮,已成為一種流行的商業模式。這
Thumbnail
這篇文章介紹了股市隱者的Podcast主題 EP201:如何從股市賺取第一桶金。他分享了賺取第一桶金的兩個錯誤觀念以及如何做到專注本業、研究股票,並省錢累積第一桶金。小茹也分享了自己的累積第一桶金的經驗和建議。文章探討了資金少是否需要考慮資產配置的問題。
Thumbnail
競爭,是我們分出高下、搶奪稀缺資源的關鍵;人生勝利組與敗者的區別常常被簡單化。透過科技公司的角度來看,快速修正和錯誤越多,人才能夠更快地接近理想。除了競爭,更重要的是持續發展、不斷修正方向、不斷創新。最重要的是沒有問題的人生並不會有進步,應該期待充滿好問題的旅程。
Thumbnail
這篇文章探討了自我覺察的重要性,以及如何將注意力收回自己的內在,以搞定自己,達到關係中的平衡。裏面分享了三個心法,包括將注意力放回內在、改變口頭禪以及保持好奇的方式,來幫助讀者搞定自己。透過自我覺察,讓情緒不輕易受外境影響,尋迴心靈的安定,並停止關係中的內耗與對立。
Thumbnail
嗨!朋友們!我們都知道,簡報製作一直都需要很多的細心與耐心。如今隨著簡報模板的不斷更新,我們能參考已經創造出來的圖表樣式,使我們的簡報呈現專業且具有吸引力。因此,今天將介紹兩種最常使用的圖表-時間軸和組織圖,讓大家看看在呈現這兩種圖表時,有哪些不同的方式可以選擇。此外,更提供簡報連結供大家下載使用。
Thumbnail
你是否想要擺脫九點到五點的枯燥工作,成為一個自由的遠端工作者?你是否不想做世俗認定的好工作,而是想要創業當自己的主人,或者創造更多的收入管道?如果你的答案是肯定的,那麼你需要一個讓人印象深刻的個人品牌。
Thumbnail
有求職者問到: 先前有被詢問到「在某專案中投入幾成?幾成是由你自主決策?」, 不知道如何準確應答。因為專案同部門是兩個人負責,所以事情和很多細節都是均分的,投入的努力很難用數字去描述是50%還是100%, 請問針對這種數字量化抽象的問題應該怎麼回答?
Thumbnail
不論你希望以哪一種方式付費支持作者,都能選擇使用「信用卡」完成付款!試試看跟著以下步驟操作,整個過程只需要不到5分鐘的時間就能完成。