


Pembangunan Bahagian Belakang Java: Membina API Reaktif dengan Akka HTTP
Pengaturcaraan reaktif menjadi semakin penting dalam pembangunan web hari ini. Akka HTTP ialah rangka kerja HTTP berprestasi tinggi berdasarkan Akka, sesuai untuk membina API gaya REST reaktif. Artikel ini akan memperkenalkan cara menggunakan HTTP Akka untuk membina API reaktif, sambil memberikan beberapa contoh praktikal. Mari mulakan!
- Mengapa memilih Akka HTTP
Apabila membangunkan API reaktif, adalah sangat penting untuk memilih rangka kerja yang betul. Akka HTTP ialah pilihan yang sangat baik kerana ia mempunyai kelebihan berikut:
1.1 Responsif dan tidak menyekat
Akka HTTP ialah rangka kerja yang sangat reaktif yang membolehkan anda mengendalikan sejumlah besar permintaan , tanpa menyekat permohonan anda. Ia menggunakan model Actor, yang bermaksud anda boleh menggunakan operasi tak segerak untuk membalas permintaan dengan cepat sambil memastikan aplikasi anda sangat berskala.
1.2 Prestasi Tinggi
Memandangkan ia dibina pada rangka kerja Akka, Akka HTTP mampu memberikan prestasi yang lebih pantas. Ini kerana ia dapat memanfaatkan sepenuhnya berbilang CPU dan teras dan sesuai untuk situasi di mana konkurensi tinggi digunakan.
1.3 Mudah untuk digunakan dan dikonfigurasikan
Akka HTTP sangat mudah untuk dikonfigurasi dan digunakan. Ia menyediakan satu set alat yang berkuasa yang membolehkan anda mengkonfigurasi dan mengurus API anda dengan cepat. Anda juga boleh menulis kod anda dalam Scala atau Java.
- Membina API reaktif
Seterusnya, kami akan menunjukkan cara membina API reaktif menggunakan Akka HTTP. Kami akan mencipta API mudah untuk mengurus senarai pengguna.
2.1 Pemasangan dan Import
Untuk menggunakan Akka HTTP anda perlu menambah kebergantungan berikut:
<dependency> <groupId>com.typesafe.akka</groupId> <artifactId>akka-actor_2.12</artifactId> <version>2.5.26</version> </dependency> <dependency> <groupId>com.typesafe.akka</groupId> <artifactId>akka-http_2.12</artifactId> <version>10.1.10</version> </dependency>
Sila pastikan anda mempunyai kebergantungan ini dalam projek Maven atau Gradle anda.
2.2 Cipta Penghala
Kini kami akan mencipta penghala yang menerima permintaan HTTP yang berbeza dan memberikan respons yang sepadan. Kami akan menggunakan kelas Laluan yang disediakan oleh Akka HTTP untuk menentukan penghala kami dan menyediakan peraturan penghalaan yang sepadan.
Dalam contoh ini, kami akan mencipta laluan /User dengan kaedah GET, POST, PUT dan DELETE. Kaedah GET akan mengembalikan senarai pengguna, kaedah POST akan mencipta pengguna baharu, kaedah PUT akan mengemas kini pengguna, dan kaedah DELETE akan memadamkan pengguna.
Berikut ialah kod untuk penghala kami:
import akka.http.javadsl.server.Route; import akka.http.javadsl.server.AllDirectives; public class UserRouter extends AllDirectives { private final UserService userService; public UserRouter(UserService userService) { this.userService = userService; } public Route createRoute() { return route( pathPrefix("users", () -> route( get(() -> complete(userService.getUsers())), post(() -> entity( Jackson.unmarshaller(User.class), user -> complete( StatusCodes.CREATED, userService.createUser(user) ) )), put(() -> entity( Jackson.unmarshaller(User.class), user -> complete( userService.updateUser(user) ) )), delete(() -> parameter( "id", id -> complete( userService.deleteUser(Long.parseLong(id)) ) )) )) ); } }
2.3 Melaksanakan lapisan perkhidmatan
Seterusnya, kita perlu melaksanakan lapisan perkhidmatan pengguna. Lapisan perkhidmatan sebenarnya akan mengendalikan semua permintaan dan menggunakan lapisan storan (seperti pangkalan data) untuk mengurus data pengguna. Dalam contoh ini, kami akan menggunakan HashMap mudah untuk menyimpan data.
Berikut ialah kod untuk kelas UserService kami:
import java.util.HashMap; import java.util.Map; import java.util.concurrent.atomic.AtomicLong; public class UserService { private final Map<Long, User> users = new HashMap<>(); private final AtomicLong counter = new AtomicLong(); public User createUser(User user) { long id = counter.incrementAndGet(); user.setId(id); users.put(id, user); return user; } public User updateUser(User user) { users.put(user.getId(), user); return user; } public User deleteUser(long id) { return users.remove(id); } public List<User> getUsers() { return new ArrayList<>(users.values()); } }
2.4 Memulakan Perkhidmatan
Sekarang kami telah menetapkan penghala dan lapisan perkhidmatan kami, kami perlu memulakan aplikasi kami . Untuk contoh ini, kami akan mencipta kaedah utama mudah yang akan memulakan pelayan HTTP Akka dan menyambung ke port yang ditentukan.
Berikut ialah kod untuk kelas permulaan kami:
import akka.actor.ActorSystem; import akka.stream.ActorMaterializer; import akka.http.javadsl.server.HttpApp; public class Main extends HttpApp { private final UserService userService = new UserService(); private final UserRouter userRouter = new UserRouter(userService); public static void main(String[] args) { Main main = new Main(); main.startServer("localhost", 8080, ActorSystem.create(), ActorMaterializer.create()); } @Override protected Route routes() { return userRouter.createRoute(); } }
- API Uji
Kini kami telah berjaya mencipta API tindak balas berasaskan HTTP Akka dan boleh gunakan kaedah HTTP yang berbeza untuk mengurus senarai pengguna. Mari uji API kami menggunakan alat seperti Posman dan pastikan ia berfungsi dengan betul.
Kaedah GET: Dapatkan senarai pengguna
GET http://localhost:8080/users
Kaedah POST: Cipta pengguna baharu
POST http://localhost:8080/users Body: { "name": "John Smith", "email": "john.smith@example.com" }
Kaedah PUT: Kemas kini pengguna sedia ada
PUT http://localhost:8080/users Body: { "id": 1, "name": "John Smith", "email": "john.smith@example.com" }
Kaedah PADAM: Padam Sedia Ada Pengguna
DELETE http://localhost:8080/users?id=1
- Ringkasan
Melalui artikel ini, kami telah mempelajari cara membina API reaktif menggunakan Akka HTTP. Kami belajar tentang faedah utama rangka kerja, cara membuat penghala dan lapisan perkhidmatan, dan cara memulakannya. Kami juga menyediakan beberapa contoh kaedah HTTP biasa supaya anda boleh menguji dan menggunakan API anda. Harap artikel ini membantu anda!
Atas ialah kandungan terperinci Pembangunan Bahagian Belakang Java: Membina API Reaktif dengan Akka HTTP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Terdapat lima arah pekerjaan dalam industri Java, yang manakah sesuai untuk anda? Java, sebagai bahasa pengaturcaraan yang digunakan secara meluas dalam bidang pembangunan perisian, sentiasa popular. Disebabkan sifat merentas platform yang kukuh dan rangka kerja pembangunan yang kaya, pembangun Java mempunyai pelbagai peluang pekerjaan dalam pelbagai industri. Dalam industri Java, terdapat lima arah pekerjaan utama, termasuk pembangunan JavaWeb, pembangunan aplikasi mudah alih, pembangunan data besar, pembangunan terbenam dan pembangunan pengkomputeran awan. Setiap arah mempunyai ciri-ciri dan kelebihannya Lima arah akan dibincangkan di bawah.

Pengaturcaraan reaktif menjadi semakin penting dalam pembangunan web hari ini. AkkaHTTP ialah rangka kerja HTTP berprestasi tinggi berdasarkan Akka, sesuai untuk membina API gaya REST reaktif. Artikel ini akan memperkenalkan cara menggunakan AkkaHTTP untuk membina API reaktif, sambil memberikan beberapa contoh praktikal. Mari mulakan! Mengapa memilih AkkaHTTP Apabila membangunkan API reaktif, adalah penting untuk memilih rangka kerja yang betul. AkkaHTTP adalah pilihan yang sangat baik kerana

Bagaimana untuk mengendalikan permintaan merentas domain dalam pembangunan fungsi backend Java? Dalam model pembangunan di mana bahagian hadapan dan bahagian belakang dipisahkan, ia adalah senario yang sangat biasa bagi bahagian hadapan untuk menghantar permintaan kepada antara muka API bahagian belakang untuk mendapatkan data melalui JavaScript. Walau bagaimanapun, disebabkan dasar asal yang sama penyemak imbas, terdapat sekatan pada permintaan merentas domain. Permintaan merentas domain bermakna halaman akhir hadapan meminta pelayan dengan nama domain yang berbeza, port yang berbeza atau protokol yang berbeza melalui AJAX dan kaedah lain. Artikel ini akan memperkenalkan kaedah biasa untuk mengendalikan permintaan merentas domain dalam pembangunan fungsi back-end Java, dengan contoh kod. Selesaikan merentas domain

Bagaimana untuk menyelesaikan masalah transaksi pangkalan data dalam pembangunan fungsi back-end Java? Dalam pembangunan fungsi back-end Java, fungsi yang melibatkan operasi pangkalan data adalah sangat biasa. Dalam operasi pangkalan data, urus niaga adalah konsep yang sangat penting. Transaksi ialah unit logik yang terdiri daripada urutan operasi pangkalan data yang sama ada dilaksanakan sepenuhnya atau tidak dilaksanakan sama sekali. Dalam aplikasi praktikal, kita selalunya perlu memastikan bahawa satu set operasi pangkalan data yang berkaitan sama ada semuanya berjaya dilaksanakan atau semuanya digulung semula untuk mengekalkan ketekalan dan kebolehpercayaan data. Jadi, bagaimana untuk membangunkan di backend Java

Dengan pembangunan berterusan teknologi Internet, membangun dan mereka bentuk RESTful API telah menjadi tugas yang penting. RESTful API menyediakan mekanisme yang mudah, ringan, fleksibel dan boleh dipercayai untuk interaksi antara perkhidmatan yang berbeza. Pada masa yang sama, membina API RESTful yang selamat menjadi semakin penting. Dalam artikel ini, kami akan meneroka cara membina API RESTful yang selamat dalam pembangunan backend Java. 1. Memahami RESTfulAPI RESTfulAPI ialah a

Bagaimana untuk melaksanakan kegigihan data dalam pembangunan fungsi back-end Java? Dengan perkembangan pesat Internet, data telah menjadi aset teras yang tidak boleh diabaikan oleh organisasi dan perusahaan. Dalam pembangunan back-end Java, mencapai ketekunan data adalah tugas penting. Artikel ini akan memperkenalkan beberapa kaedah kegigihan data biasa dan menggunakan contoh kod untuk menunjukkan cara melaksanakan kegigihan data dalam Java. 1. Pangkalan data hubungan Pangkalan data hubungan adalah salah satu kaedah kegigihan data yang paling biasa. Di Jawa kita boleh menggunakan JDBC (JavaDa

Bagaimana untuk melaksanakan fungsi carian dalam pembangunan fungsi back-end Java? Fungsi carian ialah ciri penting dalam aplikasi moden. Sama ada mencari produk di platform e-dagang atau mencari rakan di media sosial, fungsi carian menyediakan pengguna cara yang mudah dan cekap untuk mendapatkan maklumat. Dalam pembangunan back-end Java, kita boleh menggunakan pelbagai teknologi dan perpustakaan untuk melaksanakan fungsi carian. Artikel ini akan memperkenalkan kaedah yang biasa digunakan untuk melaksanakan fungsi carian, dan memberikan contoh kod menggunakan bahasa Java sebagai contoh. Dalam pembangunan backend Java, kami biasanya

Bagaimana untuk menangani pengecualian dalam pembangunan fungsi backend Java? Dalam pembangunan backend Java, mengendalikan situasi pengecualian adalah tugas yang sangat penting. Pengecualian mungkin berlaku pada masa jalan, seperti pengecualian penuding nol, pengecualian luar sempadan tatasusunan, dsb., atau pengecualian itu mungkin dalam logik perniagaan, seperti sumber tidak ditemui, kebenaran tidak mencukupi, dsb. Mengendalikan pengecualian ini dengan betul bukan sahaja dapat meningkatkan kestabilan dan kebolehpercayaan kod, tetapi juga meningkatkan kebolehselenggaraan dan kebolehbacaan kod. Artikel ini akan memperkenalkan cara untuk mengendalikan situasi tidak normal secara munasabah dalam pembangunan back-end Java dan memberikan kod yang sepadan.
