Saya baru-baru ini mempelajari spesifikasi antarmuka RESTful dan menggunakan Postman untuk memperkenalkannya. Berikut adalah spesifikasi antarmuka RESTful yang relevan: 1. Apa itu RESTful?
REST: Ini adalah gaya arsitektur untuk layanan web; menggunakan standar dan protokol yang sangat populer seperti HTTP, URI, XML, JSON, dan HTML; ini adalah desain arsitektur yang ringan, lintas platform, dan lintas bahasa; gaya, bukan standar adalah sebuah ide.
RESTful: Bahasa Cina yang sesuai adalah REST; Layanan web Restful adalah aplikasi REST umum, yang merupakan layanan web yang sesuai dengan gaya REST; Layanan web REST adalah sejenis Arsitektur Berorientasi Sumber Daya (Arsitektur Berorientasi Sumber Daya) (arsitektur berorientasi sumber daya). ) [Rekomendasi: ujung depan web]
Inti dari RESTful adalah gaya arsitektur perangkat lunak. Intinya berorientasi pada sumber daya dan memecahkan masalah berikut:
Mengurangi kompleksitas pembangunan
Meningkatkan skalabilitas sistem
2.Perbedaan antara SABUN dan REST:
SOAP (Simple Object Access Protocol): Spesifikasi protokol untuk pertukaran data. Ini adalah protokol berbasis XML yang ringan dan sederhana.
REST (Representational State Transfer): Gaya arsitektur perangkat lunak yang dapat mengurangi kompleksitas pengembangan dan meningkatkan skalabilitas sistem.
Efisiensi dan kemudahan penggunaan :
SOAP : Karena perluasan konten protokolnya sendiri karena berbagai kebutuhan, kinerja pemrosesan SOAP menurun. Pada saat yang sama, kemudahan penggunaan dan biaya pembelajaran juga meningkat.
Tenang : Karena desain antarmuka dan abstraksi operasinya yang berorientasi pada sumber daya, ini menyederhanakan desain buruk pengembang, dan juga memanfaatkan secara maksimal konsep desain protokol aplikasi asli HTTP.
Keamanan :
RESTful sangat cocok untuk antarmuka layanan berbasis sumber daya, dan sangat cocok untuk skenario yang memerlukan efisiensi tinggi namun persyaratan keamanan rendah.
Kematangan SOAP dapat memberikan kemudahan pada desain antarmuka yang perlu disediakan untuk berbagai bahasa pengembangan dan memiliki persyaratan keamanan yang lebih tinggi.
Singkatnya:
Keamanan : SOAP akan lebih baik dari REST;
Efisiensi dan kemudahan penggunaan : REST lebih baik;
Kedewasaan : Secara umum, SOAP lebih unggul dari REST dalam hal kematangan.
3. Cara mendesain RESTful API :
Jalur sumber daya : Dalam arsitektur RESTful, setiap URL mewakili sumber daya, sehingga URL tidak boleh memiliki kata kerja, hanya kata benda. Secara umum, kata benda dalam API harus berbentuk jamak.
Kata kerja HTTP : Pengoperasian sumber daya (CURD), diwakili oleh kata kerja HTTP (predikat).
GET: Mengambil sumber daya (satu atau lebih item) dari server.
POST: Buat sumber daya baru di server.
PUT: Perbarui sumber daya di server (klien menyediakan sumber daya lengkap yang diubah).
HAPUS: Hapus sumber daya dari server.
Mari kita ambil contoh kebun binatang (termasuk informasi tentang berbagai hewan dan karyawan):
https://api.example.com/v1/zoos //Sumber daya kebun binatang https://api.example.com/v1/animals //Sumber daya hewan https://api.example.com/v1/employees //Karyawan sumber
POST /zoos: Buat kebun binatang baru
GET /zoos/ID: Dapatkan informasi tentang kebun binatang tertentu
PUT /zoos/ID: Memperbarui informasi kebun binatang tertentu
HAPUS /zoos/D: Menghapus kebun binatang
Menyaring informasi :
?limit=10: Tentukan jumlah rekaman yang dikembalikan
?offset=10: Menentukan posisi awal dari rekaman yang dikembalikan.
?page=2&per_page=100: Tentukan halaman mana dan jumlah catatan per halaman.
?sortby=name&order=asc: Tentukan atribut mana yang mengurutkan hasil yang dikembalikan, dan urutan pengurutannya.
?animal_type_id=1: Tentukan kondisi filter
Kode status :
200 (OK) - jika sumber daya yang ada telah diubah
201 (dibuat) - jika sumber daya baru dibuat
202 (diterima) - Permintaan pemrosesan telah diterima tetapi belum diselesaikan (pemrosesan asinkron)
301 (Dipindahkan Secara Permanen) - URI sumber daya telah diperbarui
303 (Lihat Lainnya) -Lainnya (seperti penyeimbangan beban)
400 (permintaan buruk) - mengacu pada permintaan buruk
404 (tidak ditemukan) - Sumber daya tidak ada
406 (tidak dapat diterima) - Server tidak mendukung representasi yang diperlukan
409 (konflik) - Konflik umum
412 (Prakondisi Gagal) - Prakondisi gagal (seperti konflik saat menjalankan pembaruan kondisi)
415 (jenis media tidak didukung) - Representasi yang diterima tidak didukung
500 (kesalahan server internal) - respons kesalahan umum
503 (Layanan Tidak Tersedia) - Layanan saat ini tidak dapat menangani permintaan tersebut
Penanganan kesalahan :
Informasi yang dikembalikan menggunakan error sebagai nama kunci dan informasi error sebagai nilai kunci.
{ kesalahan: “Kunci API tidak valid” }
Hasil pengembalian :
GET /collection: Mengembalikan daftar (array) objek sumber daya
GET /collection/resource: Mengembalikan satu objek sumber daya
POST /collection: Mengembalikan objek sumber daya yang baru dibuat
PUT /collection/resource: Mengembalikan objek sumber daya lengkap
PATCH /collection/resource: Mengembalikan objek sumber daya lengkap
DELETE /collection/resource: mengembalikan dokumen kosong
4. Proses pengujian antarmuka gaya REST :
Mari kita perkenalkan langsung dengan gambar.
5. Penulisan kode dan pengujian tukang pos :
Alat: ide, database mysql, Tukang Pos
Data tabel database:
Kelas entitas:
Entri front-end (vue) ke kursus penguasaan: masuk ke pembelajaran
@Data @ApiModel("Kelas Entitas Pengguna") kelas publik Pengguna memperluas Model<Pengguna> mengimplementasikan Serializable { @ApiModelProperty("userid") @NotNull(message = "ID Pengguna tidak boleh kosong") id Integer pribadi; @NotBlank(message = "Nama pengguna tidak boleh kosong") @ApiModelProperty("nama pengguna") nama String pribadi; @Min(1) @Maks(100) @ApiModelProperty("Usia pengguna") usia bilangan bulat pribadi; @NotEmpty(message = "Kotak surat tidak boleh kosong") @ApiModelProperty("Email Pengguna") @E-mail email String pribadi; @ApiModelProperty("0: Tidak dihapus 1: Dihapus") @TableLogic Integer pribadi dihapus; @NotBlank(message = "Kata sandi tidak boleh kosong") @ApiModelProperty("Kata sandi pengguna") kata sandi String pribadi; }
Kode lapisan pengontrol (lapisan layanan dihilangkan):
@Api(tags = "Manajemen Pengguna") @RestController @RequestMapping("/Situs Web Saya/pengguna") Pengontrol Pengguna kelas publik { @ Kabel Otomatis pribadi UserServiceImpl userServiceimpl; @ApiOperation(nilai = "Pengguna Baru") @PostMapping public int insertUser(Pengguna pengguna) { System.out.println("Berhasil menambahkan"); kembalikan userServiceimpl.insertUser(pengguna); } @ApiOperation(value = "Ubah informasi pengguna") @PutMapping public void updateUser(@RequestBody @Valid Pengguna pengguna) { userServiceimpl.updateUser(pengguna); System.out.println("Modifikasi berhasil"); } @ApiOperation(value = "Hapus pengguna", catatan = "Hapus pengguna berdasarkan id") @DeleteMapping("/{id}") public int deleteUser(@ApiParam("user id") @PathVariable @Valid Integer id) { System.out.println("Penghapusan berhasil"); kembalikan userServiceimpl.deleteUser(id); } @ApiOperation(nilai = "Kueri semua pengguna") @GetMapping Daftar publik<Pengguna> allUser() { System.out.println("Permintaan berhasil"); kembalikan penggunaServiceimpl.allUser(); } @ApiOperation(nilai = "pengguna kueri id") @GetMapping("/{id}") publik Pengguna selectById(@PathVariable("id") String id) { kembalikan userServiceimpl.selectById(id); } }
Gunakan Tukang Pos untuk menguji (jalur url harus sesuai):
Kueri semua pengguna : http://localhost:8081/MyWebsite/user
Tajuk: Tipe Konten=aplikasi/json
Tubuh: kosong
Kueri berhasil!
Kueri berdasarkan id:
Kueri berhasil!
Tambahkan pengguna baru :
Periksa apakah database telah berhasil ditambahkan!
Ubah informasi pengguna (ubah nama dan usia dengan ID 7):
Periksa apakah modifikasi database berhasil!
Hapus pengguna berdasarkan id :
Periksa apakah database berhasil dihapus! (dihapus=1)
Mungkin Anda menghapus seluruh data secara langsung
Saat menanyakan atau memperbarui atau menghapus data yang tidak ada (atau data ilegal), eksekusi gagal. Ada antarmuka lain, seperti menghapus semua antarmuka. Saya belum mengujinya satu per satu di sini tunjukkan pada mereka.
Di atas adalah pengenalan mendetail tentang spesifikasi antarmuka yang tenang dan alat debugging tukang pos!