لمحة عن هذا الدرس التطبيقي حول الترميز
1. نظرة عامة
يوفر Spring Framework فكرة ResourceLoader
لقراءة الملفات من مصادر مختلفة وكتابتها بسهولة، مثل نظام الملفات أو مسار الصف أو الويب. ما عليك سوى تحديد معرف الموارد المنتظم (URI) للمورد باستخدام بادئة البروتوكول المعروفة. على سبيل المثال، للوصول إلى ملف على نظام الملفات المحلي، عليك تحديد "معرف الموارد المنتظم" (URI) مثل file:/data/config.yaml
.
ستكتب تطبيق Spring Kiosk الذي سيصل إلى الملفات المُخزَّنة في Cloud Storage باستخدام فكرة مورد Spring وبادئة البروتوكول gs:
.
ستتمكّن من تنفيذ ذلك باستخدام Cloud Shell وأداة سطر أوامر gcloud في Cloud SDK.
ما ستتعرّف عليه
- كيفية استخدام Cloud Starter Spring Starter
- كيفية الوصول إلى الملفات في Cloud Storage باستخدام Spring
- كيفية استخدام الملخّصات للربيع
Resource
وWritableResource
المتطلبات اللازمة
- مشروع على Google Cloud
- متصفح، مثل Google Chrome
- الإلمام بأدوات تحرير النصوص في Linux القياسية، مثل Vim وEmacs وGNU Nano
كيف ستستخدم الدرس التطبيقي حول الترميز؟
كيف تقيّم تجربة إنشاء تطبيقات الويب بتنسيق HTML وCSS؟
كيف تقيّم تجربتك في استخدام خدمات Google Cloud؟
2. الإعداد والمتطلبات
إعداد البيئة الذاتية
إذا لم يكن لديك حساب على Google (Gmail أو Google Apps)، يجب إنشاء حساب. تسجيل الدخول إلى وحدة تحكُّم Google Cloud Platform (console.cloud.google.com) وإنشاء مشروع جديد:
عذرًا! وسيُشار إليه لاحقًا في هذا الدرس التطبيقي بعنوان PROJECT_ID
.
بعد ذلك، ستحتاج إلى تفعيل الفوترة في Cloud Console لاستخدام موارد Google Cloud.
من المفترض ألا يكلفك العمل على هذا الدرس التطبيقي أكثر من بضعة دولارات، ولكن قد يترتّب عليك أكثر إذا قررت استخدام المزيد من الموارد أو إذا تركتها قيد التشغيل (راجع قسم "عرض الأسعار التقديري" في نهاية هذا المستند).
يكون المستخدمون الجدد لخدمة Google Cloud Platform مؤهَّلين للاستفادة من فترة تجريبية مجانية تبلغ 300 دولار أمريكي.
Cloud Shell
ستستخدم Cloud Shell، وهي بيئة سطر أوامر يتم تشغيلها في Google Cloud.
تفعيل Google Cloud Shell
من وحدة تحكّم Google Cloud Platform، انقر على رمز Cloud Shell في شريط الأدوات العلوي الأيسر:
ثم انقر على "بدء Cloud Shell":
ينبغي ألا تستغرق إدارة الحسابات والاتصال بالبيئة أكثر من بضع لحظات.
يتم تحميل هذه الآلة الافتراضية مزوّدة بكل أدوات التطوير التي ستحتاج إليها. وتوفِّر هذه الآلة دليلاً رئيسيًا دائمًا بسعة 5 غيغابايت ويتمّ تشغيله على Google Cloud، ما يحسّن كثيرًا أداء الشبكة والمصادقة. ويمكن إتمام معظم عملك إن لم يكن كلّه في هذا الدرس ببساطة من خلال متصفّح أو جهاز Google Chromebook فقط.
عند الاتصال بخدمة Cloud Shell، من المفترض أن تتم مصادقتها وأنّ المشروع قد سبق وتم ضبطه على PROJECT_ID.
شغِّل الأمر التالي في Cloud Shell لتأكيد أنّك تمت مصادقته:
gcloud auth list
مخرجات الأوامر
Credentialed accounts: - <myaccount>@<mydomain>.com (active)
gcloud config list project
مخرجات الأوامر
[core] project = <PROJECT_ID>
إذا لم يكن كذلك، يمكنك تعيينه من خلال هذا الأمر:
gcloud config set project <PROJECT_ID>
مخرجات الأوامر
Updated property [core/project].
3. إنشاء ملف في Cloud Storage
بعد إطلاق Cloud Shell، يمكنك البدء في إنشاء الملفات ونقلها إلى Cloud Storage.
إنشاء ملف باسم my-file.txt
:
$ echo "Hello World from GCS" > my-file.txt
بعد ذلك، عليك إنشاء حزمة فريدة جديدة في Cloud Storage ونقل الملف إليها باستخدام gsutil
.
$ BUCKET=spring-bucket-$USER $ gsutil makebucket gs://$BUCKET $ gsutil copy my-file.txt gs://$BUCKET
انتقِل إلى متصفِّح مساحة التخزين في Cloud Storage، وتحقَّق من وجود الحزمة والملف.
4. إعداد تطبيق Spring Kiosk
يمكنك بدء كتابة التطبيق باستخدام سطر الأوامر لإنشاء تطبيق Spring Bot جديد باستخدام Spring Initializr:
$ curl https://start.spring.io/starter.tgz \ -d dependencies=web,cloud-gcp-storage -d baseDir=spring-gcs | tar -xzvf -
يُرجى العِلم أنّ الأداة الأولى ستضيف تلقائيًا spring-boot-starter-web
وspring-cloud-gcp-starter-storage
إلى تبعياتك في pom.xml
من التطبيق المستنِد إلى نموذج.
يمكنك التغيير إلى دليل تطبيق النموذج:
$ cd spring-gcs
إنشاء التطبيق وتشغيله باستخدام Maven
$ ./mvnw spring-boot:run
سيبدأ التطبيق في الاستماع على المنفذ 8080. افتَح علامة تبويب جديدة في Cloud Shell وشغِّل curl
للوصول إلى التطبيق.
$ curl localhost:8080
من المفترض أن تحصل على استجابة 404 لأن التطبيق لا ينفذ أي إجراء مفيد بعد. ارجع إلى علامة تبويب Cloud Shell السابقة حيث يكون التطبيق قيد التشغيل وينهيه باستخدام Control+C
(Command+C
على Macintosh).
5. قراءة الملف في Cloud Storage
يمكنك تعديل تطبيق Spring لديه للوصول إلى my-file.txt
، وهو الملف الذي كنت تخزّنه سابقًا في Cloud Storage. هدفك هو عرض محتوى الملف عبر HTTP.
في التعليمات التالية، ستستخدم Vim لتعديل الملفات، ولكن يمكنك أيضًا استخدام Emacs أو GNU Nano أو محرّر الرموز المضمّنة في Cloud Shell:
$ cd ~/spring-gcs
إضافة وحدة تحكُّم REST GcsController
إلى التطبيق
$ vi src/main/java/com/example/demo/GcsController.java
الصق الرمز التالي، ولا تنسَ إصلاح معرّف الموارد المنتظم (URI) للمرجع باستخدام الحزمة التي أنشأتها مسبقًا. ويمكنك التحقق من الحزمة عن طريق تشغيل أمر echo $BUCKET
.
src/main/java/com/example/demo/GcsController.java
package com.example.demo;
import java.io.IOException;
import java.nio.charset.Charset;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.Resource;
import org.springframework.util.StreamUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class GcsController {
@Value("gs://REPLACE_WITH_YOUR_BUCKET/my-file.txt")
private Resource gcsFile;
@RequestMapping(value = "/", method = RequestMethod.GET)
public String readGcsFile() throws IOException {
return StreamUtils.copyToString(
gcsFile.getInputStream(),
Charset.defaultCharset()) + "\n";
}
}
إنشاء التطبيق وتشغيله باستخدام Maven:
$ ./mvnw spring-boot:run
يبدأ التطبيق في الاستماع على المنفذ 8080. افتَح علامة تبويب جديدة في Cloud Shell وشغِّل curl
للوصول إلى التطبيق.
$ curl localhost:8080
من المفترض أن ترى الآن محتوى الملف المعروض من التطبيق. انتقِل إلى علامة تبويب Cloud Shell السابقة حيث يعمل التطبيق واوقفه باستخدام Control+C
(Command+C
على نظام التشغيل Macintosh).
6. الكتابة إلى الملف في Cloud Storage
أنك قرأت محتوى الملف في Cloud Storage وكشفته من خلال وحدة تحكم Spring REST. يمكنك الآن تغيير محتوى الملف بنشر محتوى الملف الجديد إلى نقطة نهاية HTTP نفسها.
عليك إضافة طريقة أخرى إلى GcsController
للرد على HTTP POST وكتابة البيانات في ملفك في Cloud Storage. في هذه المرة، يمكنك إرسال ربيع Resource
إلى WritableResource
.
يمكنك تعديل GcsController
باستخدام عمليات استيراد إضافية تحتاجها.
src/main/java/com/example/demo/GcsController.java
import java.io.OutputStream;
import org.springframework.core.io.WritableResource;
import org.springframework.web.bind.annotation.RequestBody;
أضِف طريقة نقطة النهاية الجديدة إلى وحدة التحكُّم.
src/main/java/com/example/demo/GcsController.java
@RestController
public class GcsController {
@RequestMapping(value = "/", method = RequestMethod.POST)
String writeGcs(@RequestBody String data) throws IOException {
try (OutputStream os = ((WritableResource) gcsFile).getOutputStream()) {
os.write(data.getBytes());
}
return "file was updated\n";
}
...
}
إنشاء التطبيق وتشغيله باستخدام Maven:
$ ./mvnw spring-boot:run
يبدأ التطبيق في الاستماع على المنفذ 8080. افتَح علامة تبويب جديدة في Cloud Shell وشغِّل curl
لنشر رسالة إلى التطبيق.
$ curl -d 'new message' -H 'Content-Type: text/plain' localhost:8080
من المُفترَض أن تظهر لك رسالة تأكيد بأنه تم تعديل محتوى الملف. يُرجى التحقّق من ذلك من خلال إجراء GET
.
$ curl localhost:8080
من المفترض أن ترى المحتوى المُعدّل للملف المعروض من التطبيق. ارجع إلى علامة تبويب Cloud Shell السابقة التي يعمل فيها التطبيق واوقفه باستخدام Control+C
(Command+C
على نظام التشغيل Macintosh).
7. تهانينا.
لقد تعلمت كيفية استخدام مورد Spring Resource للوصول إلى الملفات في Cloud Storage بسهولة. لقد كتبت تطبيق ويب Spring Kiosk يمكنه قراءة ملف وكتابته في Cloud Storage. وتعرّفت أيضًا على "بدء تشغيل الربيع" لخدمة Cloud Storage التي تمكّن هذه الوظيفة.
مزيد من المعلومات
- التخزين في السحابة الإلكترونية
- مشروع Spring Cloud Google Cloud
- ربيع في مستودع GitHub في Google Cloud
- Java على Google Cloud
الترخيص
يخضع هذا العمل لترخيص بموجب رخصة المشاع الإبداعي مع نسب العمل إلى مؤلفه 2.0.