Jelastic Cloud API

Jelastic Cloud API ช่วยให้นักพัฒนาดำเนินการตั้งค่าที่จำเป็นสำหรับ application’s lifecycle และขยายฟังก์ชันการทำงานของแพลตฟอร์มของเราโดยการรวมบริการอื่นๆ การใช้ API คุณสามารถสร้างโปรแกรม environment, deploy แอปและทำงานอื่นๆที่สามารถทำได้ก่อนหน้านี้ผ่านแดชบอร์ด

api overview api

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

api overview rest link

ข้อมูลของคำขอสามารถส่งเป็น 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 ตัวอย่างวิธีการนี้จะอยู่ในเอกสารด้านล่าง

api overview signin method

การดำเนินการ 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);