การเชื่อมต่อ API ของ GitLab เพื่อดาวน์โหลดไฟล์ จาก Source Code Control Version

PHP Knowledge เป็น บอร์ดรวามความรู้ php เน้นบทความ แนวทางการเขียนโปรแกรม บันทึกกันลืม เพื่อให้สมาชิกได้เขียนความรู้ที่ตัวเองมีให้สมาชิกท่านอื่นๆ ได้ เข้ามาอ่าน และ ไว้อ่านเองกันลืมด้วย

Moderators: mindphp, ผู้ดูแลกระดาน

User avatar
tsukasaz
PHP VIP Members
PHP VIP Members
Posts: 11759
Joined: 18/04/2012 9:39 am

การเชื่อมต่อ API ของ GitLab เพื่อดาวน์โหลดไฟล์ จาก Source Code Control Version

Post by tsukasaz »

การเชื่อมต่อ API ของ GitLab เพื่อดาวน์โหลดไฟล์

gitlab-logo-gray-rgb.png

สำหรับนักพัฒนาที่มีโอกาสได้ใช้งานตัว Git เชื่อว่าหลายๆ คนน่าจะคุ้นกับชื่อของ GitLab เพราะว่าเป็น 1 ในเว็บไซต์ยอดนิยมที่ทำหน้าที่เป็น Git Server โดยนอกจากเรื่องของการเก็บ Source Code แล้ว ทาง GitLab ยังมี Feature ที่น่าสนใจอีกหลายอย่างที่จะช่วยสนับสนุนงานพัฒนาระบบให้มีประสิทธิภาพและรวดเร็วมากขึ้น รวมทั้งยังมีช่องทาง API สำหรับให้ระบบภายนอกสามารถเข้ามาเรียกใช้ข้อมูลส่วนต่างๆ ไปใช้งานต่อได้อีกด้วย ในบทความนี้จะมาแนะนำตัวอย่างการเรียก API เพื่อดาวน์โหลดไฟล์ล่าสุดจาก Git กันนะครับ


สิ่งที่ต้องมีก่อนเชื่อมต่อ API

- บัญชีของ GitLab สามารถสมัครใช้งานได้ฟรี
- Personal Access Tokens สำหรับเข้าถึงโปรเจคและไฟล์ต่างๆ


วิธีการขอ Personal Access Tokens

เข้าระบบ GitLab คลิกที่ไอคอนด้านขวาบน เลือก Settings
PHP Knowledge-1.png
PHP Knowledge-1.png (43.87 KiB) Viewed 4001 times

ดูที่เมนูด้านซ้ายเลือก Access Tokens
PHP Knowledge-1.png
PHP Knowledge-1.png (101.71 KiB) Viewed 4001 times

ใส่ชื่อของ Access Tokens ถ้าต้องการกำหนดวันหมดอายุก็ใส่ไปได้ แล้วก็ติ๊กเลือกช่อง api และ คลิก Create personal access token
PHP Knowledge-1.png
PHP Knowledge-1.png (153.77 KiB) Viewed 4001 times

เราก็จะได้ Access Tokens สำหรับใช้งานแล้ว
PHP Knowledge-1.png
PHP Knowledge-1.png (80.65 KiB) Viewed 4001 times

การดู ID ของ Project

การดู ID ของ Project จะอยู่ด้านล่างชื่อโปรเจค
PHP Knowledge-1.png
PHP Knowledge-1.png (63.35 KiB) Viewed 4001 times


ตัวอย่างโค้ดสำหรับ การเชื่อมต่อ API ของ GitLab เพื่อดาวน์โหลดไฟล์

Code: Select all

<?php
// xxxx คือ access token ที่ได้มาเอามาใส่แทน
$authorization = "Authorization: Bearer xxxx";

$ch = curl_init();
// xxxx คือ ID ของ Project เอามาใส่แทน
// สำหรับ URL นี้จะใช้สำหรับดาวน์โหลดไฟล์ zip ของ Source Code ทั้งหมด
curl_setopt($ch, CURLOPT_URL, 'https://gitlab.com/api/v4/projects/xxxx/repository/archive.zip');
// กำหนด header ที่ส่งไปเป็นข้อมูล access token 
curl_setopt($ch, CURLOPT_HTTPHEADER, array ($authorization));
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);

// $response ที่ได้กลับมาคือ เนื้อหาของไฟล์ zip นะครับ ต้องเอาไปเขียนใส่ไฟล์อีกที
$f = fopen('archive.zip', 'w+');
fwrite($f, $response);
fclose($f);

$zip = new ZipArchive();
if ($zip->open( 'archive.zip') === TRUE)
{
	// ให้แตกไฟล์ออกที่โฟลเดอร์ที่รันไฟล์นี้อยู่
	$zip->extractTo(dirname(__FILE__));
	$zip->close();
}


ข้อมูลเพิ่มเติม
API ทั้งหมดที่ใช้งานได้ https://docs.gitlab.com/ee/api/api_resources.html
The last bug isn't fixed until the last user is dead. (Sidney Markowitz, 1995)

  • Similar Topics
    Replies
    Views
    Last post

Return to “PHP Knowledge”

Who is online

Users browsing this forum: No registered users and 1 guest