JavaRush /مدونة جافا /Random-AR /الربيع ليس مخيفا. السيطرة على الراحة الخاصة بك
Павел
مستوى

الربيع ليس مخيفا. السيطرة على الراحة الخاصة بك

نشرت في المجموعة
محتويات دورة المقالات إعادة استخدام عمل شخص آخر هو أمر مقدس لأي مطور 😌 للمضي قدمًا، تحتاج إلى فهم أساسيات شبكة الكمبيوتر، إليك سلسلة من المقالات . انتبه إلى النقاط الرئيسية: كيفية عمل HTTP، وما هي GET، وPOST، وPUT، وحالات الاستجابة، وMVC، اقرأ بشكل منفصل عن JSON والتسلسل . سيكون من المفيد تنفيذ المثال المقترح باستخدام servlets، وهذا سيساعدك على حب Spring-Boot من كل قلبك. مثال تطبيق Spring-Boot من هذه السلسلة بسيط جدًا، ولكنه سيساعدك على فهم جوهر MVC. أدناه سيكون هناك رابط لمشروع أكثر إثارة للاهتمام. للتعرف على REST واستخدامه في الربيع، اقرأ هذه المقالات الثلاث . في المقالة الأولى سوف تقرأ ما هو REST. المقال الثاني يتحدث عن الطلبات والردود، فاحرص على قراءة تعليق الرفيق فيدل وأخذه بعين الاعتبار. ستقدم المقالة الثالثة مثالاً عمليًا للتنفيذ في الربيع، ولا يختلف أسلوب إنشاء التطبيق كثيرًا (من المفيد البحث والمقارنة)، وتنفيذه. انتبه إلى المكان الذي يتحدثون فيه عن HttpStatus، ResponseEntity <?> (إذا كان <?> مربكًا، فاقرأ الفصل 13. تعميمات من "Java. دليل المبتدئين"، هربرت شيلدت)، في نفس المقالة اقرأ عن POSTMAN ( بالإضافة إلى فيديو قصير حول هذا الموضوع ) تثبيت POSTMAN، لا تحتاج إلى جميع الميزات، تعرف على كيفية إنشاء استعلامات متنوعة. هناك عوامل تشغيل ثلاثية في المثال، قم بتحديث ذاكرتك إذا نسيت. انتبه إلى كيفية تنفيذ المقالة النموذجية لحقن الفول باستخدام @Autowired
@RestController
public class ClientController {

   private final ClientService clientService;

   @Autowired
   public ClientController(ClientService clientService) {
       this.clientService = clientService;
   }
}
يجب أن تدرك أنه بدءًا من Spring 4.3، يمكن حذف التعليق التوضيحي @Autowired إذا كان للفئة مُنشئ واحد فقط. سيكتشف الإطار نفسه أنه يجب تنفيذ حبة الفول في المُنشئ. يمكنك قراءة المزيد في هذا المصدر . وإذا كنت حذرًا، فيجب أن يكون لديك سؤال حول بنية حزمة الخدمة ، أي: لماذا توجد واجهة ClientService والفئة العامة ClientServiceImpl - هذه ممارسة صحيحة، وسنتحدث لاحقًا عن سبب الحاجة إليها وسنتحدث عنها سوف استخدامه. هذا كل شيء مع المقالات. قبل أن نقرأ، دعونا نكتب. كما يقولون: "لا يوم بدون رمز!" كنقطة بداية، دعونا ننشئ طلب GET بسيطًا. آخر مرة كتبنا فيها تطبيقًا لتكهنات الخضروات، git clone https://FromJava@bitbucket.org/FromJava/speculation.git git clone git@bitbucket.org:FromJava/speculation.git افتح التطبيق، وفي الحزمة ru. java.rush سنقوم بإنشاء حزمة وحدات تحكم (ستكون وحدات التحكم من نمط MVC موجودة هنا). إنشاء فئة عامة ProductController
@RestController
@RequestMapping("/speculation")
public class ProductController {

}
يشير التعليق التوضيحي @RestController إلى Spring إلى أن هذه وحدة تحكم بقية. @RequestMapping - ستتلقى جميع أساليب التحكم الطلبات باستخدام URI الذي سيبدأ بالسلسلة المحددة في أقواس التعليقات التوضيحية ("/ المضاربة"). نكتب الطريقة التالية في الفصل
@GetMapping("/simple")
public String simple(){
    return "Легкий GET requestик";
}
نطلق المشروع، نكتب في سطر المتصفح: http://localhost:8080/speculation/simple نتلقى الإجابة: طلب Easy GET بعض التوضيحات: 1. أنشأنا فئة تميزت @RestController كوحدة تحكم، وأشارت إلى المسار إليه @RequestMapping ("/ التكهنات") - هذا التعليق التوضيحي اختياري؛ بدونه، سيبدأ المسار بـ "/". 2. أنشأنا طريقة تقوم، عند تنفيذها، بإرجاع سلسلة (طلب Light GET)، ووضعنا علامة عليها باستخدام التعليق التوضيحيGetMapping (أن هذه الطريقة مخصصة لطلبات GET خصيصًا) وأشارنا إلى المسار إلى الطريقة ("/ بسيط") 3. أطلقنا المشروع (الخادم) على المنفذ 8080، وقمنا بتقديم طلب GET إلى العنوان: server/controller/method (http://localhost:8080/speculation/simple) 4. السلسلة العامة simple(){ return نجحت طريقة "Easy GET requester" مع هذا الطلب؛ } 5. تم إرجاع نتيجة الطريقة إلى المتصفح في شكل سلسلة "Easy GET request". حسنًا، إنها البداية! المقالات الأكثر روعة في انتظاركم. إن إتقان المادة المقترحة أعلاه سيستغرق أكثر من يوم واحد، فلا داعي للاستعجال هنا، فهذا الموضوع مهم للغاية ويجب فهمه، "أكل الفيل في أجزاء". للتدريب (بعد إتقان المادة): أكمل وحدة تحكم تطبيق المضاربة . طرق الإنشاء: 1) البحث عن منتج حسب المعرف استخدم طريقة ProductService.findById(); إخراج المثال
{
        "id": 1,
        "name": "Картофель",
        "purchasePrice": 20,
        "packaging": null,
        "salePrice": null
 }
بعد تنفيذ طرق التحكم المتبقية، فكر في: "لماذا يكون الحقلان الأخيران فارغين؟ ما الذي يجب فعله حتى تكون هناك بعض القيم؟" 2) عرض جميع المنتجات على واجهة المتجر: للبحث عن جميع المنتجات، استخدم طريقة ProductService.findAll()؛ لملء حقول التعبئة والتغليف والترميز، استخدم ProductService.pack(); ProductService.makeMoney(); يجب أن يحتوي الإخراج على مصفوفة JSON تسرد المنتجات، على سبيل المثال:
[
    {
        "id": 1,
        "name": "Картофель",
        "purchasePrice": 20,
        "packaging": "Упаковано в лучшем виде",
        "salePrice": 100
    },
    {
        "id": 2,
        "name": "Морковь",
        "purchasePrice": 14,
        "packaging": "Упаковано в лучшем виде",
        "salePrice": 70
    }
]
3) إضافة منتج جديد إلى قاعدة البيانات (إضافة المنتج: الملفوف وسعر الشراء بالجملة) Use: ProductService.save(); يجب أن تقوم الطريقة بإرجاع حالة Http المقابلة. 4) حذف منتج حسب المعرف للقيام بذلك، قم أولاً بتطبيق طريقة تحتوي على ProductRepository.deleteById() في ProductService ؛ ومن ثم استخدمه في وحدة التحكم. يجب أن تقوم طريقة التحكم بإرجاع حالة Http المناسبة. 5) التغييرات في المنتج حسب المعرف (التغيير في سعر الجملة للمنتج واسم المنتج) ستكون هذه العملية أكثر تعقيدًا من العمليات السابقة. نحتاج أولاً إلى العثور على المنتج الذي نريد تغييره حسب المعرف Use ProductService.findById(); بعد ذلك، في المنتج (الكائن) الذي تم العثور عليه، استبدل قيمة الحقول بقيمة حقول الكائن المستلم في نص طلب الوضع (json_object)، ويمكن القيام بذلك بشيء من هذا القبيل:
найденный_товар = productService.findById(id);
найденный_товар.setName(an object_json.getName);
найденный_товар.setPurchasePrice(an object_json.getPurchasePrice);
بعد ذلك، يجب حفظ المنتج الذي تم تغييره .productService.save(found_product); يجب أن تقوم الطريقة بإرجاع حالة Http المقابلة. إذا كانت لديك مشاكل في هذه الطريقة، يمكنك جوجل "وضع طلب جافا"، ولم يقم أحد بإلغاء الإنترنت بعد) لا ينتهي العمل مع وحدات التحكم عند هذا الحد، فلا يزال هناك العديد من المواضيع المقبلة...
تعليقات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION