Dengan JSR 311 dan implementasinya kami memiliki standar yang kuat untuk mengekspos objek Java melalui REST. Namun di sisi klien tampaknya ada sesuatu yang hilang yang sebanding dengan Apache Axis untuk SOAP - sesuatu yang menyembunyikan layanan web dan marshal data secara transparan kembali ke objek Java.
Bagaimana Anda membuat klien Java RESTful? Menggunakan HTTPConnection dan penguraian hasil secara manual? Atau klien khusus untuk mis. Jersey atau Apache CXR?
Jawaban:
Ini adalah pertanyaan lama (2008) sehingga ada lebih banyak opsi sekarang daripada sebelumnya:
UPDATES (proyek masih aktif pada tahun 2020):
Async-http-client oleh Sonatype.Peringatan tentang memilih klien HTTP / REST. Pastikan untuk memeriksa apa yang digunakan kerangka kerja Anda untuk klien HTTP, bagaimana cara kerjanya threading, dan idealnya gunakan klien yang sama jika ia menawarkannya. Itu jika Anda menggunakan sesuatu seperti Vert.x atau Play, Anda mungkin ingin mencoba menggunakan klien pendukungnya untuk berpartisipasi dalam apa pun bus atau loop reaktor yang disediakan kerangka kerja ... jika tidak bersiaplah untuk kemungkinan masalah threading yang menarik.
sumber
Seperti yang saya sebutkan di utas ini saya cenderung menggunakan Jersey yang mengimplementasikan JAX-RS dan dilengkapi dengan klien REST yang bagus. Yang menyenangkan adalah jika Anda mengimplementasikan sumber daya tenang Anda menggunakan JAX-RS maka klien Jersey dapat menggunakan kembali penyedia entitas seperti untuk JAXB / XML / JSON / Atom dan sebagainya - sehingga Anda dapat menggunakan kembali objek yang sama di sisi server seperti Anda gunakan pada tes unit sisi klien.
Sebagai contoh di sini adalah kasus uji unit dari proyek Apache Camel yang mencari muatan XML dari sumber daya tenang (menggunakan titik akhir objek JAXB). Metode resource (uri) didefinisikan dalam kelas dasar ini yang hanya menggunakan API klien Jersey.
misalnya
BTW Saya berharap bahwa versi masa depan JAX-RS menambahkan API sisi klien yang bagus di sepanjang garis yang ada di Jersey
sumber
Anda dapat menggunakan API Java SE standar:
Atau Anda dapat menggunakan API klien REST yang disediakan oleh implementasi JAX-RS seperti Jersey. API ini lebih mudah digunakan, tetapi membutuhkan stoples tambahan di jalur kelas Anda.
Untuk informasi lebih lanjut, lihat:
sumber
Jika Anda hanya ingin meminta layanan REST dan mengurai respons, Anda dapat mencoba Istirahat Tertanggung
sumber
Anda juga dapat memeriksa Restlet yang memiliki kemampuan sisi klien penuh, lebih berorientasi REST yang perpustakaan tingkat rendah seperti HttpURLConnection atau Apache HTTP Client (yang dapat kita manfaatkan sebagai konektor).
Salam, Jerome Louvel
sumber
Anda bisa mencoba Rapa . Beri tahu kami tanggapan Anda tentang hal yang sama. Dan jangan ragu untuk mencatat masalah atau fitur yang diharapkan.
sumber
Saya ingin menunjukkan 2 opsi lagi:
sumber
Coba
JdkRequest
dari jcabi-http (saya seorang pengembang). Begini Cara kerjanya:Lihat posting blog ini untuk lebih jelasnya: http://www.yegor256.com/2014/04/11/jcabi-http-intro.html
sumber
Saya baru-baru ini mencoba Retrofit Library dari kotak, Ini hebat dan Anda dapat memanggil API sisanya dengan sangat mudah. Konfigurasi berbasis anotasi memungkinkan kita untuk menyingkirkan banyak pengkodean pelat ketel.
sumber
Saya menggunakan Apache HTTPClient untuk menangani semua sisi HTTP hal.
Saya menulis XML SAX parser untuk konten XML yang mem-parsing XML ke model objek Anda. Saya percaya bahwa Axis2 juga memperlihatkan metode Model XML -> (Axis 1 menyembunyikan bagian ini, mengganggu). Generator XML sangat sederhana.
Tidak butuh waktu lama untuk kode, dan cukup efisien, menurut saya.
sumber
OkHttp ringan dan kuat jika dikombinasikan dengan Retrofit juga. Ini berfungsi baik untuk penggunaan Java umum maupun di Android.
OkHttp : http://square.github.io/okhttp/
Retrofit : http://square.github.io/retrofit/
sumber
Karena tidak ada yang disebutkan, inilah yang lain: Feign , yang digunakan oleh Spring Cloud .
sumber
Meskipun sederhana untuk membuat klien HTTP dan membuat reuest. Tetapi jika Anda ingin menggunakan beberapa klien yang dibuat secara otomatis, Anda dapat menggunakan WADL untuk menggambarkan dan menghasilkan kode.
Anda dapat menggunakan RestDescribe untuk menghasilkan dan mengkompilasi WSDL, Anda dapat menghasilkan klien di php, ruby, python, java dan C # menggunakan ini. Ini menghasilkan kode bersih dan ada perubahan yang baik bahwa Anda harus men-tweak sedikit setelah pembuatan kode, Anda dapat menemukan dokumentasi yang bagus dan pemikiran yang mendasari di balik alat di sini .
Ada beberapa alat WADL yang menarik dan bermanfaat yang disebutkan di wintermute.
sumber
Saya menulis perpustakaan yang memetakan antarmuka java ke layanan JSON REST jarak jauh:
https://github.com/ggeorgovassilis/spring-rest-invoker
sumber
Coba lihat di http-rest-client
https://github.com/g00dnatur3/http-rest-client
Ini adalah contoh sederhana:
Perpustakaan menangani serialisasi json dan mengikat untuk Anda.
Ini adalah contoh lain,
Dan satu contoh terakhir,
Bersulang!
sumber
Contoh klien jersey Rest:
Menambahkan ketergantungan:
ForGetMethod dan melewati dua parameter:
GetMethod melewati satu parameter dan Mendapatkan Jawaban dari Daftar:
Di Atas Itu Mengembalikan Daftar yang kami terima sebagai Daftar dan kemudian mengubahnya menjadi Json Array dan kemudian Json Array ke Daftar.
Jika Kirim Permintaan lewat Objek Json sebagai Parameter:
sumber
Saya menggunakan RestAssured sebagian besar waktu untuk mengurai respon layanan istirahat dan menguji layanan. Selain dari Rest Assured, saya juga menggunakan perpustakaan di bawah ini untuk berkomunikasi dengan layanan Resful.
Sebuah. Klien Jersey Rest
b. Spring RestTemplate
c. Klien HTTP Apache
sumber
Saat ini saya menggunakan https://github.com/kevinsawicki/http-request Saya suka kesederhanaannya dan cara contoh ditampilkan, tetapi kebanyakan saya dijual ketika saya membaca:
yang menyelesaikan beberapa masalah pada proyek java 1.6. Adapun decoding json menjadi objek gson hanya tak terkalahkan :)
sumber