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

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

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

ภาพประจำตัวสมาชิก
tsukasaz
PHP VIP Members
PHP VIP Members
โพสต์: 21911
ลงทะเบียนเมื่อ: 18/04/2012 9:39 am

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

โพสต์ที่ยังไม่ได้อ่าน โดย 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 6758 times

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

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

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

การดู ID ของ Project

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


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

โค้ด: เลือกทั้งหมด

<?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)
ภาพประจำตัวสมาชิก
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
โพสต์: 41129
ลงทะเบียนเมื่อ: 22/09/2008 6:18 pm
ติดต่อ:

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

โพสต์ที่ยังไม่ได้อ่าน โดย mindphp »

เสริมเพิ่มเติม ถ้าเราย้าย Server Token ประจำของ user จะหายไป
ต้องสร้าง token ขึ้นมาใหม่ตามบทความนี้
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042
ภาพประจำตัวสมาชิก
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
โพสต์: 41129
ลงทะเบียนเมื่อ: 22/09/2008 6:18 pm
ติดต่อ:

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

โพสต์ที่ยังไม่ได้อ่าน โดย mindphp »

นอกจากนี้เราสามารถสร้าง token แยกแต่ละ Project ก็ได้ โดยเข้าไปตามนี้
เช้าไปที่ Menu > Projects ค้นหา Project
Settings > CI/CD.
Expand Token Access.
และ สร้าง Access Token ได้จากหน้าจอนี้
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042
ภาพประจำตัวสมาชิก
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
โพสต์: 41129
ลงทะเบียนเมื่อ: 22/09/2008 6:18 pm
ติดต่อ:

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

โพสต์ที่ยังไม่ได้อ่าน โดย mindphp »

gitlab เวอร์ชั่น 13.15 จะรองรับ API load zip ไฟล์ ระบุ folder ได้แล้ว
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042
ภาพประจำตัวสมาชิก
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
โพสต์: 41129
ลงทะเบียนเมื่อ: 22/09/2008 6:18 pm
ติดต่อ:

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

โพสต์ที่ยังไม่ได้อ่าน โดย mindphp »

ตัวอย่างโหลดจาก folder ที่ต้องการ
รูปแบบ

โค้ด: เลือกทั้งหมด

GET /projects/:id/repository/files/:file_path

โค้ด: เลือกทั้งหมด

curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/13083/repository/files/app%2Fmodels%2Fkey%2Erb?ref=master"
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042
ตอบกลับโพส
  • Similar Topics
    ตอบกลับ
    แสดง
    โพสต์ล่าสุด

ผู้ใช้งานขณะนี้

สมาชิกกำลังดูบอร์ดนี้: facebook.com [Crawler] และบุคลทั่วไป 40