بناء خدمة RESTful في Java باستخدام JAX-RS و Jersey (مئوية إلى فهرنهايت وفهرنهايت إلى مئوية)
نشرت: 2020-03-25
هل لديك أحد الاستفسارات / الأسئلة أدناه؟
- اكتب خدمة java REST لتحويل الفهرنهايت إلى درجة مئوية ومن الدرجة المئوية إلى فهرنهايت
- REST مع Java (JAX-RS) باستخدام جيرسي
- التحويل من طريقة فهرنهايت إلى درجة مئوية في جافا
- المساعدة في الواجبات المنزلية مع تحويل الدرجات (CtoF، FtoC)
- Java API لخدمات الويب RESTful
- خدمات الويب - ما هي أفضل واجهة برمجة تطبيقات Java REST؟
- REST API لجافا؟
- ctof و ftoc تعليمي. ctof و ftoc تعليمي جافا
- قم بإنشاء خدمات ويب RESTful باستخدام تقنية Java
- إطار عمل RESTful web API لجافا
RESTful Service
: لقد اكتسب نقل الحالة التمثيلية (REST) قبولًا واسعًا عبر الويب كبديل أبسط لخدمات الويب المستندة إلى SOAP ولغة وصف خدمات الويب (WSDL).
يحدد REST مجموعة من المبادئ المعمارية التي يمكنك من خلالها تصميم خدمات الويب التي تركز على موارد النظام ، بما في ذلك كيفية معالجة حالات الموارد ونقلها عبر HTTP بواسطة مجموعة كبيرة من العملاء المكتوبة بلغات مختلفة. إذا تم قياسه من خلال عدد خدمات الويب التي تستخدمها ، فقد ظهر REST في السنوات القليلة الماضية وحدها كنموذج تصميم خدمة ويب سائد. في الواقع ، كان لـ REST تأثير كبير على الويب لدرجة أنه أدى في الغالب إلى استبدال تصميم الواجهة المستندة إلى SOAP و WSDL لأنه أسلوب أبسط بكثير في الاستخدام.
RESTFul مقابل. دروس SOAP.

JAX-RS:
Java API for RESTful Web Services (JAX-RS) ، هي مجموعة إذا كانت APIs لمطور خدمة REST. JAX-RS هو جزء من Java EE6 ، ويجعل المطورين يطورون تطبيق الويب REST بسهولة.
جيرسي:
جيرسي هي المصدر المفتوح ، جودة الإنتاج ، JAX-RS (JSR 311) تنفيذ مرجعي لبناء خدمات ويب RESTful. ولكنه أيضًا أكثر من مجرد تنفيذ مرجعي. توفر جيرسي API بحيث يمكن للمطورين توسيع جيرسي لتناسب احتياجاتهم.
لنبدأ في إنشاء RESTful API
بسيط من خلال الخطوات التالية:
الخطوة 1
في Eclipse => File => New => Dynamic Web Project. سمها باسم " CrunchifyRESTJerseyExample
".

تأكد من ضبط:
- وقت التشغيل المستهدف: Apache Tomcat v9.0
- إصدار وحدة الويب الديناميكية: 4.0
الخطوة 2
إذا كنت لا ترى web.xml
(واصف النشر) ، فاتبع هذه الخطوات. أو
- انقر بزر الماوس الأيمن على المشروع
- حدد
Java EE Tools
- انقر فوق
Generate Deployment Descriptor Stub
سيؤدي هذا إلى إنشاء ملف web.xml
ضمن مجلد /WebContent/WEB-INF/
.
الخطوه 3
الآن قم بتحويل Project إلى Maven Project
حتى نتمكن من إضافة ملفات .jar المطلوبة كتبعيات.
خطوات:
- انقر بزر الماوس الأيمن على المشروع
- انقر فوق
Configure
- حدد الخيار
Convert to Maven Project
.


ما عليك سوى النقر فوق Finish button
دون إجراء أي تغييرات.

الخطوة 4
افتح ملف pom.xml
وأضف التبعيات أدناه.
- asm.jar
- حزمة جيرسي
- json.jar
- خادم جيرسي

ها هو ملف pom.xml
بي.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
< project xmlns = "http://maven.apache.org/POM/4.0.0" xmlns : xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi : schemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" > < modelVersion > 4.0.0 < / modelVersion > < groupId > CrunchifyRESTJerseyExample < / groupId > < artifactId > CrunchifyRESTJerseyExample < / artifactId > < version > 0.0.1 - SNAPSHOT < / version > < packaging > war < / packaging > < build > < sourceDirectory > src < / sourceDirectory > < plugins > < plugin > < artifactId > maven - compiler - plugin < / artifactId > < version > 3.7.0 < / version > < configuration > < source > 1.7 < / source > < target > 1.7 < / target > < / configuration > < / plugin > < / plugins > < / build > < dependencies > < dependency > < groupId > asm < / groupId > < artifactId > asm < / artifactId > < version > 3.3.1 < / version > < / dependency > < dependency > < groupId > com . sun . jersey < / groupId > < artifactId > jersey - bundle < / artifactId > < version > 1.19.4 < / version > < / dependency > < dependency > < groupId > org . json < / groupId > < artifactId > json < / artifactId > < version > 20170516 < / version > < / dependency > < dependency > < groupId > com . sun . jersey < / groupId > < artifactId > jersey - server < / artifactId > < version > 1.19.4 < / version > < / dependency > < dependency > < groupId > com . sun . jersey < / groupId > < artifactId > jersey - core < / artifactId > < version > 1.19.4 < / version > < / dependency > < / dependencies > < / project > |
الخطوة 5
قم بتحديث ملف web.xml الخاص بك بهذا الملف. ها هي نسخة ملف web.xml
بي:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
<? xml version = "1.0" encoding = "UTF-8" ?> < web - app xmlns : xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns = "http://java.sun.com/xml/ns/javaee" xmlns : web = "http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi : schemaLocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version = "3.0" > < display - name > CrunchifyRESTJerseyExample < / display - name > < welcome - file - list > < welcome - file > index . html < / welcome - file > < welcome - file > index . htm < / welcome - file > < welcome - file > index . jsp < / welcome - file > < welcome - file > default . html < / welcome - file > < welcome - file > default . htm < / welcome - file > < welcome - file > default . jsp < / welcome - file > < / welcome - file - list > < servlet > < servlet - name > Jersey Web Application < / servlet - name > < servlet - class > com . sun . jersey . spi . container . servlet . ServletContainer < / servlet - class > < load - on - startup > 1 < / load - on - startup > < / servlet > < servlet - mapping > < servlet - name > Jersey Web Application < / servlet - name > < url - pattern > / crunchify /* < / url - pattern > < / servlet - mapping > < / web - app > |
الخطوة 6
- انتقل إلى
Java Resources
- انقر فوق src
- انقر بزر الماوس الأيمن -> جديد -> فصل دراسي
- الحزمة: com.crunchify.restjersey
- الاسم: CtoFService
CtoFService.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
package com . crunchify . restjersey ; /** * @author Crunchify.com * * Description: This program converts unit from Centigrade to Fahrenheit. * Last updated: 12/28/2018 */ import javax . ws . rs . GET ; import javax . ws . rs . Path ; import javax . ws . rs . PathParam ; import javax . ws . rs . Produces ; @ Path ( "/ctofservice" ) public class CtoFService { @ GET @ Produces ( "application/xml" ) public String convertCtoF ( ) { Double fahrenheit ; Double celsius = 36.8 ; fahrenheit = ( ( celsius * 9 ) / 5 ) + 32 ; String result = "@Produces(\"application/xml\") Output: \n\nC to F Converter Output: \n\n" + fahrenheit ; return "<ctofservice>" + "<celsius>" + celsius + "</celsius>" + "<ctofoutput>" + result + "</ctofoutput>" + "</ctofservice>" ; } @ Path ( "{c}" ) @ GET @ Produces ( "application/xml" ) public String convertCtoFfromInput ( @ PathParam ( "c" ) Double c ) { Double fahrenheit ; Double celsius = c ; fahrenheit = ( ( celsius * 9 ) / 5 ) + 32 ; String result = "@Produces(\"application/xml\") Output: \n\nC to F Converter Output: \n\n" + fahrenheit ; return "<ctofservice>" + "<celsius>" + celsius + "</celsius>" + "<ctofoutput>" + result + "</ctofoutput>" + "</ctofservice>" ; } } |
الخطوة 7
بنفس الطريقة قم بإنشاء FtoCService.java
FtoCService.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
package com . crunchify . restjersey ; /** * @author Crunchify, LLC * Description: This program converts unit from Fahrenheit to Centigrade. * */ import javax . ws . rs . GET ; import javax . ws . rs . Path ; import javax . ws . rs . PathParam ; import javax . ws . rs . Produces ; import javax . ws . rs . core . Response ; import org . json . JSONException ; import org . json . JSONObject ; @ Path ( "/ftocservice" ) public class FtoCService { @ GET @ Produces ( "application/json" ) public Response convertFtoC ( ) throws JSONException { JSONObject jsonObject = new JSONObject ( ) ; Double fahrenheit = 98.24 ; Double celsius ; celsius = ( fahrenheit - 32 ) * 5 / 9 ; jsonObject . put ( "F Value" , fahrenheit ) ; jsonObject . put ( "C Value" , celsius ) ; String result = "@Produces(\"application/json\") Output: \n\nF to C Converter Output: \n\n" + jsonObject ; return Response . status ( 200 ) . entity ( result ) . build ( ) ; } @ Path ( "{f}" ) @ GET @ Produces ( "application/json" ) public Response convertFtoCfromInput ( @ PathParam ( "f" ) float f ) throws JSONException { JSONObject jsonObject = new JSONObject ( ) ; float celsius ; celsius = ( f - 32 ) * 5 / 9 ; jsonObject . put ( "F Value" , f ) ; jsonObject . put ( "C Value" , celsius ) ; String result = "@Produces(\"application/json\") Output: \n\nF to C Converter Output: \n\n" + jsonObject ; return Response . status ( 200 ) . entity ( result ) . build ( ) ; } } |
الخطوة 8
لنقم الآن بتنظيف مساحة عمل الكسوف ونبني المشروع.

1 2 3 |
1. Project - > Clean 2. Project - > Right click - > Maven - > Update Project 3. Project - > Right click - > Run As . . - > Maven Build ( option 5 ) - > Add "clean install" - > Run |
point 3
أعلاه ، استخدمthese screenshots
التالية: Maven Build، clean install.- يجب أن ترى بناء رسالة النجاح.
الخطوة 9
انشر مشروع CrunchifyRESTJerseyExample
على Tomcat. فيما يلي خطوات مفصلة حول كيفية إعداد Tomcat على Eclipse إذا لم تكن قد قمت بذلك.
- انتقل إلى علامة تبويب الخادم
- انقر بزر الماوس الأيمن على الخادم
- انقر فوق
Add and Remove Projects
- مشروع التحديد من الجانب الأيسر وانقر فوق
Add
- انقر فوق إنهاء

الخطوة 10
- ابدأ تشغيل Tomcat Server 9.0

هيكل المشروع الكامل:

فيما يلي تبعيات Java Build Path:

تأكد من استخدام JDK 1.8 لهذا المشروع. بدء تشغيل Java 9 - تتم إزالة الوحدات النمطية JAXB و JAX-WS و JAF و JTA و CORBA وتحتاج إلى إضافة هذه الوحدات يدويًا إلى ملف Maven pom.xml.
كل مجموعة.
الآن دعنا نختبر خدمة الويب RESTful.
اختبار 1: درجة مئوية إلى فهرنهايت خدمة الويب without
معلمة
الرابط: http: // localhost: 8080 / CrunchifyRESTJerseyExample / crunchify / ctofservice /

اختبار 2: خدمة الويب من الدرجة المئوية إلى فهرنهايت with
المعلمة

اختبار 3: خدمة ويب من فهرنهايت إلى مئوية without
معلمة

اختبار 4: خدمة الويب من فهرنهايت إلى مئوية with
المعلمة

أمثلة على عميل RESTFul:
- كيفية إنشاء RESTful Java Client باستخدام Apache HttpClient - مثال
- كيفية إنشاء RESTful Java Client باستخدام Java.Net.URL - مثال
- كيفية إنشاء RESTful Java Client باستخدام عميل Jersey - مثال
يجب أن يقرأ آخر:
- CrunchifyJSONtoHTML.js - JSON to HTML table Converter Script
- كيفية إنشاء نفاد الذاكرة (OOM) في Java برمجيًا
- كيفية تشغيل مثيلات Tomcat المتعددة على خادم واحد؟
- كيف تقرأ JSON Object From File in Java - Crunchify Tutorial
هل تواجه مشكلة في تشغيل الكود؟
بعض خطوات الفرز:
في البداية ، استخدمت التبعية jersey-core
للقميص. ولكن تمت إضافة تبعية jersey-server
أيضًا لتجنب المشكلة أدناه.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
SEVERE : Servlet [ Jersey Web Application ] in web application [ / CrunchifyRESTJerseyExample ] threw load ( ) exception java . lang . ClassNotFoundException : com . sun . jersey . spi . container . servlet . ServletContainer at org . apache . catalina . loader . WebappClassLoaderBase . loadClass ( WebappClassLoaderBase . java : 1328 ) at org . apache . catalina . loader . WebappClassLoaderBase . loadClass ( WebappClassLoaderBase . java : 1157 ) at org . apache . catalina . core . DefaultInstanceManager . loadClass ( DefaultInstanceManager . java : 542 ) at org . apache . catalina . core . DefaultInstanceManager . loadClassMaybePrivileged ( DefaultInstanceManager . java : 523 ) at org . apache . catalina . core . DefaultInstanceManager . newInstance ( DefaultInstanceManager . java : 150 ) at org . apache . catalina . core . StandardWrapper . loadServlet ( StandardWrapper . java : 1032 ) at org . apache . catalina . core . StandardWrapper . load ( StandardWrapper . java : 971 ) at org . apache . catalina . core . StandardContext . loadOnStartup ( StandardContext . java : 4829 ) at org . apache . catalina . core . StandardContext . startInternal ( StandardContext . java : 5143 ) at org . apache . catalina . util . LifecycleBase . start ( LifecycleBase . java : 183 ) at org . apache . catalina . core . ContainerBase $ StartChild . call ( ContainerBase . java : 1432 ) at org . apache . catalina . core . ContainerBase $ StartChild . call ( ContainerBase . java : 1422 ) at java . base / java . util . concurrent . FutureTask . run ( FutureTask . java : 264 ) at org . apache . tomcat . util . threads . InlineExecutorService . execute ( InlineExecutorService . java : 75 ) at java . base / java . util . concurrent . AbstractExecutorService . submit ( AbstractExecutorService . java : 140 ) at org . apache . catalina . core . ContainerBase . startInternal ( ContainerBase . java : 944 ) at org . apache . catalina . core . StandardHost . startInternal ( StandardHost . java : 831 ) at org . apache . catalina . util . LifecycleBase . start ( LifecycleBase . java : 183 ) at org . apache . catalina . core . ContainerBase $ StartChild . call ( ContainerBase . java : 1432 ) at org . apache . catalina . core . ContainerBase $ StartChild . call ( ContainerBase . java : 1422 ) at java . base / java . util . concurrent . FutureTask . run ( FutureTask . java : 264 ) at org . apache . tomcat . util . threads . InlineExecutorService . execute ( InlineExecutorService . java : 75 ) at java . base / java . util . concurrent . AbstractExecutorService . submit ( AbstractExecutorService . java : 140 ) at org . apache . catalina . core . ContainerBase . startInternal ( ContainerBase . java : 944 ) at org . apache . catalina . core . StandardEngine . startInternal ( StandardEngine . java : 261 ) at org . apache . catalina . util . LifecycleBase . start ( LifecycleBase . java : 183 ) at org . apache . catalina . core . StandardService . startInternal ( StandardService . java : 422 ) at org . apache . catalina . util . LifecycleBase . start ( LifecycleBase . java : 183 ) at org . apache . catalina . core . StandardServer . startInternal ( StandardServer . java : 801 ) at org . apache . catalina . util . LifecycleBase . start ( LifecycleBase . java : 183 ) at org . apache . catalina . startup . Catalina . start ( Catalina . java : 695 ) at java . base / jdk . internal . reflect . NativeMethodAccessorImpl . invoke0 ( Native Method ) at java . base / jdk . internal . reflect . NativeMethodAccessorImpl . invoke ( NativeMethodAccessorImpl . java : 62 ) at java . base / jdk . internal . reflect . DelegatingMethodAccessorImpl . invoke ( DelegatingMethodAccessorImpl . java : 43 ) at java . base / java . lang . reflect . Method . invoke ( Method . java : 566 ) at org . apache . catalina . startup . Bootstrap . start ( Bootstrap . java : 350 ) at org . apache . catalina . startup . Bootstrap . main ( Bootstrap . java : 492 ) |
إذا كنت تحصل على خطأ أعلاه ، فحاول إضافة تبعية maven أدناه إلى ملف pom.xml
1 2 3 4 5 |
< dependency > < groupId > org . glassfish . jersey . core < / groupId > < artifactId > jersey - server < / artifactId > < version > 2.27 < / version > < / dependency > |