Bangun Layanan RESTful di Jawa menggunakan JAX-RS dan Jersey (Celcius ke Fahrenheit & Fahrenheit ke Celsius)
Diterbitkan: 2020-03-25
Apakah Anda memiliki salah satu pertanyaan/pertanyaan di bawah ini?
- Tulis layanan java REST untuk mengonversi Fahrenheit ke Celcius dan Celcius ke Fahrenheit
- REST dengan Java (JAX-RS) menggunakan Jersey
- Konversi dari Fahrenheit ke Celsius Metode di Jawa
- Bantuan pekerjaan rumah dengan konversi derajat (CtoF, FtoC)
- Java API untuk Layanan Web RESTful
- layanan web – Manakah Java REST API terbaik?
- REST API untuk Java?
- tutorial ctof dan ftoc. ctof dan ftoc Java Tutorial
- Buat layanan Web RESTful dengan teknologi Java
- Kerangka kerja API web RESTful untuk Java
RESTful Service
: Representational State Transfer (REST) telah diterima secara luas di seluruh Web sebagai alternatif yang lebih sederhana untuk layanan Web berbasis SOAP dan Web Services Description Language (WSDL).
REST mendefinisikan seperangkat prinsip arsitektur yang dengannya Anda dapat merancang layanan Web yang berfokus pada sumber daya sistem, termasuk bagaimana status sumber daya ditangani dan ditransfer melalui HTTP oleh berbagai klien yang ditulis dalam bahasa yang berbeda. Jika diukur dengan jumlah layanan Web yang menggunakannya, REST telah muncul dalam beberapa tahun terakhir saja sebagai model desain layanan Web yang dominan. Faktanya, REST memiliki dampak yang begitu besar di Web sehingga sebagian besar telah menggantikan desain antarmuka berbasis SOAP dan WSDL karena ini adalah gaya yang jauh lebih sederhana untuk digunakan.
RESTFul Vs. tutorial sabun.

JAX-RS:
Java API for RESTful Web Services (JAX-RS), adalah kumpulan API untuk mengembangkan layanan REST. JAX-RS adalah bagian dari Java EE6, dan membuat pengembang untuk mengembangkan aplikasi web REST dengan mudah.
Jersey:
Jersey adalah implementasi referensi open source, kualitas produksi, JAX-RS (JSR 311) untuk membangun layanan Web RESTful. Tapi, itu juga lebih dari Implementasi Referensi. Jersey menyediakan API sehingga pengembang dapat memperluas Jersey agar sesuai dengan kebutuhan mereka.
Mari kita mulai membangun RESTful API
sederhana dengan langkah-langkah di bawah ini:
Langkah 1
Di Eclipse => File => New => Proyek Web Dinamis. Beri nama sebagai " CrunchifyRESTJerseyExample
".

Pastikan Anda mengatur:
- Target waktu proses: Apache Tomcat v9.0
- Versi modul web dinamis: 4.0
Langkah 2
Jika Anda tidak melihat web.xml
(deskriptor penerapan), ikuti langkah-langkah berikut. ATAU
- Klik kanan pada proyek
- Pilih
Java EE Tools
- Klik
Generate Deployment Descriptor Stub
Ini akan membuat file web.xml
di bawah folder /WebContent/WEB-INF/
.
Langkah-3
Sekarang konversikan Proyek ke Proyek Maven Project
sehingga kami dapat menambahkan file .jar yang diperlukan sebagai dependensi.
Langkah:
- Klik kanan pada proyek
- Klik
Configure
- Pilih opsi
Convert to Maven Project
.


Cukup klik Finish button
tanpa membuat perubahan apa pun.

Langkah-4
Buka file pom.xml
dan tambahkan dependensi di bawah ini.
- asm.jar
- jersey-bundle.jar
- json.jar
- jersey-server.jar

Ini file pom.xml
saya.
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 > |
Langkah-5
Perbarui file web.xml Anda dengan yang ini. Ini adalah salinan file web.xml
saya:
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 > |
Langkah-6
- Buka
Java Resources
- Klik pada src
- Klik kanan -> Baru -> Kelas
- Paket: com.crunchify.restjersey
- Nama: 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>" ; } } |
Langkah-7
Cara yang sama membuat 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 ( ) ; } } |
Langkah-8
Sekarang mari bersihkan ruang kerja Eclipse dan bangun proyek.

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 |
- Untuk
point 3
di atas gunakanthese screenshots
: Maven Build, clean install. - Anda akan melihat pesan sukses membangun.
Langkah-9
Terapkan proyek CrunchifyRESTJerseyExample
di Tomcat. Berikut adalah langkah-langkah terperinci tentang cara mengatur Tomcat di Eclipse jika Anda belum melakukannya.
- Buka Tab Server
- Klik kanan pada Server
- Klik
Add and Remove Projects
- Seleksi proyek dari sisi kiri dan klik
Add
- Klik selesai

Langkah-10
- Mulai Tomcat Server 9.0

Struktur proyek lengkap:

Berikut adalah Dependensi Java Build Path:

Pastikan Anda menggunakan JDK 1.8 untuk proyek ini. Memulai Java 9 – modul JAXB, JAX-WS, JAF, JTA, CORBA dihapus dan Anda perlu menambahkan modul tersebut secara manual ke file pom.xml Maven Anda.
Siap.
Sekarang mari kita uji Layanan Web RESTful Anda.
Tes 1: layanan web Celsius ke Fahrenheit without
parameter
Tautan: http://localhost:8080/CrunchifyRESTJerseyExample/crunchify/ctofservice/

Tes 2: layanan web Celsius ke Fahrenheit with
parameter

Tes 3: layanan web Fahrenheit ke Celsius without
parameter

Tes 4: layanan web Fahrenheit ke Celsius with
parameter

Contoh Klien RESTFul:
- Cara Membuat RESTful Java Client menggunakan Apache HttpClient – Contoh
- Cara Membuat Klien Java RESTful Dengan Java.Net.URL – Contoh
- Cara Membuat Klien Java RESTful Dengan Jersey Client – Contoh
Yang lain harus membaca:
- CrunchifyJSONtoHTML.js – Skrip Konverter tabel JSON ke HTML
- Cara Menghasilkan Out Of Memory (OOM) di Java Secara Terprogram
- Bagaimana Cara Menjalankan Beberapa Instance Tomcat di Satu Server?
- Cara Membaca Objek JSON Dari File di Java – Tutorial Crunchify
Mengalami masalah saat menjalankan kode?
Beberapa langkah triase:
Awalnya saya menggunakan ketergantungan jersey-core
. Tetapi menambahkan ketergantungan jersey-server
juga untuk menghindari masalah di bawah ini.
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 ) |
Jika Anda mendapatkan kesalahan di atas, coba tambahkan ketergantungan maven di bawah ini ke dalam file pom.xml Anda
1 2 3 4 5 |
< dependency > < groupId > org . glassfish . jersey . core < / groupId > < artifactId > jersey - server < / artifactId > < version > 2.27 < / version > < / dependency > |