Jelastic Cloud API ช่วยให้นักพัฒนาดำเนินการตั้งค่าที่จำเป็นสำหรับ application’s lifecycle และขยายฟังก์ชันการทำงานของแพลตฟอร์มของเราโดยการรวมบริการอื่นๆ การใช้ API คุณสามารถสร้างโปรแกรม environment, deploy แอปและทำงานอื่นๆที่สามารถทำได้ก่อนหน้านี้ผ่านแดชบอร์ด
Jelastic API ปฏิบัติตามทฤษฎี REST; REST API กำหนดชุดของฟังก์ชันที่นักพัฒนาสามารถ request ได้และจะได้รับ response การโต้ตอบจะดำเนินการผ่านโปรโตคอล HTTPS ข้อดีของวิธีการดังกล่าวคือการขยายโปรโตคอล HTTPS ให้กว้างขึ้นซึ่งทำให้ REST API สามารถใช้ได้กับการเขียนโปรแกรมเกือบทุกภาษา
Jelastic API Request
คำขอทั้งหมดของ API method คือ GET หรือ POST HTTPS-requests ไปยัง URL พร้อมกับชุดพารามิเตอร์:
https://{hoster-api-host}/1.0/
ประเภทของ URL ที่ควรใช้มีการระบุไว้ในแต่ละวิธีที่ช่อง REST
ข้อมูลของคำขอสามารถส่งเป็น query string (หลังเครื่องหมาย “?”) ในขณะที่ใช้ method GET หรือในเนื้อหาของ POST request ในกรณีของ GET request พารามิเตอร์จะต้องเข้ารหัสแบบเปอร์เซ็นต์ (URL encoding)
หมายเหตุ: ตั้งแต่เวอร์ชัน Jalastic 5.1 จะไม่รองรับ method GET ภายใน API requests เนื่องจากเหตุผลด้านความปลอดภัย:
Signin – https://[hoster-api-host]/1.0/users/authentication/rest/signin?login=[string]&password=[string]
Signup – https://reg.[hoster-domain]/signup?email=[string]
Change password – https://[hoster-api-host]/1.0/users/account/rest/changepassword?oldPassword=[string]&newPassword=[string]session=[string]
เพื่อเป็นการเตือนความจำมีการจำกัดความยาวของ URL request – 2048 characters เราจึงแนะนำให้ใช้:
- GET request เพื่อรับข้อมูลจากฐานข้อมูลมาแสดงผล
- POST request ใช้สำหรับการเปลี่ยนแปลงข้อมูล (การสร้าง environment, การเปลี่ยนไฟล์การกำหนดค่า ฯลฯ)
ด้วยวิธีนี้คุณจะไม่ถูกจำกัดความยาวของ request นอกจากนี้การใช้งานดังกล่าวมีความเกี่ยวข้องกับข้อกำหนดโปรโตคอล HTTPS มากขึ้น Jelastic API methods ทั้งหมดต้องยืนยันตัวตนและรายละเอียดเป้าหมายการดำเนินการ ซึ่งจัดเตรียมให้ผ่านพารามิเตอร์ session และ envName ตามลำดับ
หมายเหตุ: หากไม่มีอาร์กิวเมนต์ envName ในคำอธิบาย method จะถูกนำไปใช้กับบัญชี/แพลตฟอร์มทั้งหมดโดยที่เลิกใช้ appid ซึ่งก่อนหน้านี้ใช้เพื่อกำหนดเป้าหมายการดำเนินการ ควรถูกละเว้น
text value ของพารามิเตอร์ควรระบุในโค้ด UTF-8 ลำดับของพารามิเตอร์ใน requset นั้นไม่สำคัญ
Jelastic API Response
request และ response จะเข้ารหัสแบบ UTF-8 สำหรับการ response ฟังก์ชัน API จะมีให้ในรูปแบบ JSON ตัวอย่างวิธีการนี้จะอยู่ในเอกสารด้านล่าง
การดำเนินการ Jelastic API
ในการเริ่มการทำงานอัตโนมัติของกระบวนการ Jelastic API คุณต้องปฏิบัติตามข้อกำหนดต่อไปนี้:
- คุณต้องลงทะเบียนกับผู้ให้บริการโฮสติ้ง
- คุณต้องดาวน์โหลด Jelastic Client Library ที่เหมาะสม (ตามเวอร์ชันของแพลตฟอร์มที่ใช้) และเพิ่มลงใน classpath
หากคุณใช้ Maven ให้เพิ่ม dependency ต่อไปนี้ใน pom.xml
<dependency>
<groupId>com.jelastic</groupId>
<artifactId>jelastic-public-j2se</artifactId>
<version>3.1</version>
</dependency>
ในการเรียกใช้ฟังก์ชัน API คุณจะต้องตรวจสอบพารามิเตอร์ “session” มีหน้าที่ในการตรวจสอบสิทธิ์ เช่นระบุผู้ใช้ด้วย request ซึ่งเซสชันสามารถทำได้โดยการใช้ method: Users > Authentication > Signin
https://{hoster-api-host}/1.0/users/authentication/rest/signin?login=[string]&password=[string]
โดยการเข้าสู่ระบบและรหัสผ่านคือบัญชี Ruk-Com Cloud ของคุณ
การเรียกใช้ฟังก์ชัน API ควรดำเนินการด้วย session value ที่ได้รับหากต้องการดำเนินการเซสชันการทำงานให้เสร็จสิ้นด้วย API ให้ไปที่ Users > Authentication > Signout
https://{hoster-api-host}/1.0/users/authentication/rest/signout?session=[string]
ด้วยความช่วยเหลือจาก Jelastic Java Client Library คุณสามารถดำเนินการต่างๆได้อัตโนมัติโดยการเชื่อมต่อกับการจัดการแอปพลิเคชัน lifecycle ยกตัวอย่างเช่น การสร้าง environment, การเปลี่ยนสถานะ การลบ การรีสตาร์ทโหนด การ deploy แอปพลิเคชัน ฯลฯ
ดังนั้นมาดูวิธีการสร้าง environment ด้วยโทโพโลยีแบบกำหนดเองและการตั้งค่าการใช้ Jelastic Java Client Library
การสร้าง environment
ตัวอย่างเวอร์ชันเต็มเกี่ยวกับการสร้าง environment ในเอกสาร Jelastic API (แท็บตัวอย่าง Jelastic Java) โดยเราจะอธิบายขั้นตอนหลักๆดังนี้:
1. สร้าง environment ใหม่แบบ public class ซึ่งจะรวมบล็อกและพารามิเตอร์ต่อไปนี้ทั้งหมด พารามิเตอร์บล็อกแรกควรมีสตริงนี้:
private final static String HOSTER_URL = "<hoster-url>";
private final static String USER_EMAIL = "<email>";
private final static String USER_PASSWORD = "<password>";
private final static String ENV_NAME = "test-api-environment-" + new Random().nextInt(100);
โดยที่:
- <hoster-url> – URL ของผู้ให้บริการโฮสติ้ง (Hoster’s URL / API) เช่น app.manage.ruk-com.cloud
- <email> – อีเมลที่คุณสมัคร Ruk-Com Cloud (login)
- <password> – รหัสผ่านของคุณสำหรับบัญชี Ruk-Com Cloud
2. จากนั้นกำหนดค่าการยืนยันตัวตนซึ่งจะใช้การเข้าสู่ระบบและรหัสผ่านที่คุณระบุไว้ข้างต้น
public static void main(String[] args) {
System.out.println("Authenticate user...");
AuthenticationResponse authenticationResponse = authenticationService.signin(USER_EMAIL, USER_PASSWORD);
System.out.println("Signin response: " + authenticationResponse);
if (!authenticationResponse.isOK()) {
System.exit(authenticationResponse.getResult());
}
final String session = authenticationResponse.getSession();
หลังจากการรับรองความถูกต้องเซสชันใหม่ที่ไม่ซ้ำกันจะถูกสร้างขึ้นโดยจะใช้สำหรับดำเนินการที่จำเป็นภายในบัญชีผู้ใช้ การเรียกใช้ฟังก์ชัน API เพิ่มเติมทั้งหมดควรดำเนินการภายในเซสชันนี้ซึ่งคุณจะยังคงใช้ได้จนถึงการเรียก Signout method
3. ขั้นตอนต่อไปคือการรับรายการของ engines ที่พร้อมใช้งานสำหรับการระบุ <engine_type> (อาจเป็น java, php, ruby, js เป็นต้น)
System.out.println("Getting list of engines...");
ArrayResponse arrayResponse = environmentService.getEngineList(session, "<engine_type>");
System.out.println("GetEngineList response: " + arrayResponse);
if (!arrayResponse.isOK()) {
System.exit(arrayResponse.getResult());
}
4. หลังจากได้รับรายการเทมเพลตของโหนดที่พร้อมใช้งานทั้งหมดสำหรับการระบุ <templates_type> ซึ่งสามารถเป็น:
- ALL – แพลตฟอร์มเทมเพลตที่มีอยู่ทั้งหมด เช่น native และ cartridges
- NATIVE – ค่าเริ่มต้นของเทมเพลตโหนด
- CARTRIDGE – เทมเพลตที่กำหนดเองซึ่งผู้ให้บริการโฮสต์จะเพิ่มลงในแพลตฟอร์มเป็นคาร์ทริดจ์
System.out.println("Getting list of templates...");
arrayResponse = environmentService.getTemplates(session, "<templates_type>", false);
System.out.println("GetTemplates response: " + arrayResponse);
if (!arrayResponse.isOK()) {
System.exit(arrayResponse.getResult());
}
5. บล็อกถัดไปมีไว้สำหรับการกำหนดค่าและการตั้งค่าแบบกำหนดเองของ environment และเซิร์ฟเวอร์ใหม่ คุณสามารถดูรายละเอียดเพิ่มเติมเกี่ยวกับพารามิเตอร์ JSON ที่ใช้ในการกำหนด environment topology ได้ที่นี่:
JSONObject env = new JSONObject()
.put("ishaenabled", false)
.put("engine", "php5.5")
.put("shortdomain", ENV_NAME);
JSONObject apacheNode = new JSONObject()
.put("nodeType", "apache2")
.put("extip", false)
.put("count", 1)
.put("fixedCloudlets", 1)
.put("flexibleCloudlets", 4);
JSONObject mysqlNode = new JSONObject()
.put("nodeType", "mysql5")
.put("extip", false)
.put("fixedCloudlets", 1)
.put("flexibleCloudlets", 4);
JSONObject memcachedNode = new JSONObject()
.put("nodeType", "memcached");
JSONArray nodes = new JSONArray()
.put(apacheNode)
.put(mysqlNode)
.put(memcachedNode);
6. ขั้นตอนสุดท้าย สร้าง environment ใหม่โดยการระบุการตั้งค่าทั้งหมด:
System.out.println("Creating environment...");
ScriptEvalResponse scriptEvalResponse = environmentService.createEnvironment(session,
"createenv", env.toString(), nodes.toString());
System.out.println("CreateEnvironment response: " + scriptEvalResponse);