Apa itu API REST?
rehat, yang bermaksud "pemindahan negara perwakilan", adalah teknologi perkhidmatan rangkaian yang paling banyak digunakan pada masa ini. Walaupun namanya agak abstrak, API REST pada dasarnya merupakan cara untuk dua sistem komputer untuk berkomunikasi menggunakan teknologi HTTP yang biasa di pelayar web dan pelayan.
Dalam pembangunan perisian, perkongsian data antara sistem sentiasa menjadi keperluan asas. Sebagai contoh, apabila membeli insurans auto, syarikat insurans perlu mendapatkan maklumat peribadi dan maklumat kenderaan anda, jadi ia perlu meminta data dari agensi pendaftaran kenderaan, agensi kredit, bank dan sistem lain. Semua ini dilakukan secara telus dalam masa nyata untuk menentukan sama ada penanggung insurans boleh menawarkan dasar yang kompetitif.
API (antara muka pengaturcaraan aplikasi) menyedari komunikasi antara sistem sedemikian dengan menyediakan antara muka untuk komunikasi antara sistem. REST hanyalah gaya API yang diterima pakai secara meluas, dan kami menggunakannya untuk berkomunikasi dengan pihak dalaman dan luaran dengan cara yang konsisten dan boleh diramal. Ini boleh disamakan dengan cara kami menghantar surat dengan setem, alamat dan sampul dalam beberapa cara untuk memastikan mereka dihantar dan dibaca.
REST sering digunakan untuk interaksi orang dalam sistem rangkaian, seperti mengambil dan mengemas kini maklumat akaun dalam aplikasi media sosial.
mata utama
- REST API menggunakan HTTP untuk memudahkan komunikasi antara sistem komputer, membolehkan pelbagai perkhidmatan (seperti agensi pendaftaran kenderaan, agensi kredit dan bank) untuk berkongsi data dalam masa nyata, dengan itu menyediakan perkhidmatan seperti petikan insurans kereta.
- REST API mengikuti satu set cadangan untuk mewujudkan perkhidmatan rangkaian, termasuk seni bina pelanggan-pelayan, ketenteraan, caching dan sistem hierarki, menjadikannya cara yang mudah dan berkesan untuk berinteraksi dengan sistem rangkaian.
- Pelaksanaan dan penggunaan API REST perlu mempertimbangkan konsistensi endpoint, kawalan versi, pengesahan, keselamatan, dan mengendalikan pelbagai permintaan atau data yang tidak perlu.
Buka pautan berikut dalam penyemak imbas anda untuk meminta masalah komputer rawak dari pangkalan data trivia terbuka:
https://www.php.cn/link/bf13848f7f02f488b2e12e009a8b0df3
Ini adalah API awam yang dilaksanakan sebagai perkhidmatan web yang tenang (ia mengikuti konvensyen REST). Penyemak imbas anda akan memaparkan soalan kuiz format json tunggal dengan jawapan, seperti:
<code>{ "response_code": 0, "results": [ { "category": "Science: Computers", "type": "multiple", "difficulty": "easy", "question": "What does GHz stand for?", "correct_answer": "Gigahertz", "incorrect_answers": [ "Gigahotz", "Gigahetz", "Gigahatz" ] } ] }</code>
<code>curl "https://www.php.cn/link/bf13848f7f02f488b2e12e009a8b0df3"</code>
dalam PHP. Tanggapan JSON adalah mesin yang boleh dibaca, jadi mereka boleh dihuraikan dan digunakan sebelum mengeluarkan HTML atau format lain. file_get_contents()
Rest API dan teknologi lain
Selama bertahun -tahun, pelbagai piawaian komunikasi data telah terus dibangunkan. Anda mungkin menghadapi pilihan seperti Corba, SOAP, atau XML-RPC. Kebanyakan mempunyai peraturan maklumat yang ketat.
REST ditakrifkan pada tahun 2000 oleh Roy Fielding dan jauh lebih mudah daripada teknologi lain. Ia bukan standard, tetapi satu set cadangan dan kekangan mengenai perkhidmatan web yang tenang. Ini termasuk:
- Pelanggan-pelayan: Sistem A mengeluarkan permintaan HTTP ke URL yang dianjurkan oleh Sistem B, dan Sistem B mengembalikan respons. Ini adalah cara yang sama berfungsi penyemak imbas. Penyemak imbas meminta URL tertentu. Permintaan dialihkan ke pelayan web, yang biasanya mengembalikan halaman HTML. Halaman ini mungkin mengandungi rujukan kepada imej, stylesheets, dan JavaScript, yang akan menghasilkan permintaan dan tindak balas selanjutnya.
- Stateless: REST adalah Stateless: Permintaan klien harus mengandungi semua maklumat yang diperlukan untuk respons. Dalam erti kata lain, dua atau lebih permintaan HTTP harus dibuat dalam apa -apa perintah dan tindak balas yang sama akan diterima (... kecuali API direka untuk mengembalikan tindak balas rawak, seperti dalam contoh kuiz di atas).
- Cachable: Response hendaklah ditakrifkan sebagai Cacheable atau tidak boleh dicelupkan. Caching meningkatkan prestasi kerana tidak perlu menjana semula respons untuk URL yang sama. Data peribadi untuk pengguna tertentu pada masa tertentu biasanya tidak di -cache.
- Hidrasi: Meminta pelanggan tidak perlu tahu sama ada mereka berkomunikasi dengan pelayan sebenar, proksi, atau perantara lain.
Buat Perkhidmatan Web Restful
permintaan perkhidmatan web yang tenang termasuk:
-
URL Endpoint. Permohonan yang melaksanakan API RESTful akan menentukan satu atau lebih titik akhir URL, termasuk nama domain, pelabuhan, laluan, dan/atau rentetan pertanyaan -contohnya,
https://mydomain/user/123?format=json
. -
Kaedah HTTP. Kaedah HTTP yang berbeza boleh digunakan untuk mana -mana titik akhir, yang sesuai dengan operasi penciptaan, membaca, mengemas kini, dan memadam (CRUD) aplikasi:
kaedah http crud operasi get baca data yang diminta kembali post create Buat rekod baru meletakkan atau patch kemas kini kemas kini rekod sedia ada Padam Padam Padam - Contoh:
-
/user/
Dapatkan permintaan untuk - kembali ke senarai pengguna berdaftar pada sistem
/user/
Buat pengguna dengan ID 123 menggunakan data utama untuk permintaan pos - (lihat 4. Di bawah). Tanggapan mengembalikan ID.
/user/123
Kemas kini Pengguna 123 Menggunakan data subjek untuk permintaan untuk - (lihat 4. Di bawah)
/user/123
kembali butiran pengguna 123 Apabila permintaan GET untuk -
/user/123
Padam Pengguna 123
-
-
-
header http. Maklumat seperti token pengesahan atau cookies boleh dimasukkan ke dalam tajuk Permintaan HTTP.
<script> fetch('http://localhost:8888/hello/') .then((response) => { return response.json(); }) .then((json) => { console.log(json); }); </script> Data subjek. Data biasanya dihantar ke atas badan HTTP dengan cara yang sama seperti HTML melakukan, atau dengan menghantar satu rentetan data yang dikodkan JSON.
Muatan tindak balas boleh menjadi kandungan praktikal: data, HTML, imej, fail audio, dll. Tanggapan data biasanya dikodkan oleh JSON, tetapi juga boleh digunakan dalam XML, CSV, rentetan mudah, atau format lain. Anda boleh membenarkan anda menentukan format pulangan dalam permintaan - contohnya,
atau /user/123?format=json
. /user/123?format=xml
Header HTTP lain, termasuk kawalan cache atau arahan tamat, boleh ditetapkan untuk menentukan berapa lama ia dapat di-cache sebelum respons dianggap "basi".
Rest Api "Hello World" Contoh
Kod Node.js berikut menggunakan rangka kerja Express untuk membuat perkhidmatan web yang tenang. Satu
endpoint tunggal bertindak balas terhadap permintaan GET HTTP.
/hello/
Pastikan node.js dipasang dan buat folder baru bernama
baru dalam folder ini, dengan kandungan berikut: restapi
package.json
<code>{ "response_code": 0, "results": [ { "category": "Science: Computers", "type": "multiple", "difficulty": "easy", "question": "What does GHz stand for?", "correct_answer": "Gigahertz", "incorrect_answers": [ "Gigahotz", "Gigahetz", "Gigahatz" ] } ] }</code>
npm install
index.js
Gunakan
<code>curl "https://www.php.cn/link/bf13848f7f02f488b2e12e009a8b0df3"</code>
npm start
http://localhost:8888/hello/
API juga membenarkan nama tersuai, jadi
<code>{ "name": "restapi", "version": "1.0.0", "description": "REST test", "scripts": { "start": "node ./index.js" }, "dependencies": { "express": "4.18.1" } }</code>
http://localhost:8888/hello/everyone/
permintaan rehat pelanggan dan kors
// simple Express.js RESTful API 'use strict'; // initialize const port = 8888, express = require('express'), app = express(); // /hello/ GET request app.get('/hello/:name?', (req, res) => res.json( { message: `Hello ${req.params.name || 'world'}!` } ) ); // start server app.listen(port, () => console.log(`Server started on port ${port}`); );
dalam penyemak imbas anda:
Panggilan mengambil http://localhost:8888/
melakukan permintaan API yang sama dan konsol penyemak imbas akan memaparkan
{ "message": "Hello world!" }
di web. Halaman JavaScript Object { message: "Hello world!" }
URL berubah dengan sewajarnya, tetapi pembukaan
. http://mydomain.com/hello/
fetch()
Atas sebab keselamatan, penyemak imbas hanya membenarkan pelanggan XMLHTPREQUEST dan mengambil panggilan API untuk dihoskan dalam domain yang sama seperti halaman panggilan. http://localhost:8888/
Cross-Origin Request Blocked
Nasib baik, perkongsian sumber silang asal (CORS) membolehkan kita untuk mengelakkan sekatan keselamatan ini. Tetapan
(mewakili semua nama domain) (seperti yang ditunjukkan dalam API Kuiz di atas).
Kod API Perkhidmatan Web boleh diubah untuk membolehkan akses kepada mana -mana skrip klien yang berjalan pada nama domain:
<code>{ "response_code": 0, "results": [ { "category": "Science: Computers", "type": "multiple", "difficulty": "easy", "question": "What does GHz stand for?", "correct_answer": "Gigahertz", "incorrect_answers": [ "Gigahotz", "Gigahetz", "Gigahatz" ] } ] }</code>
Sebagai alternatif, anda boleh menggunakan fungsi middleware Express.js untuk melampirkan tajuk ke setiap permintaan titik akhir:
<code>curl "https://www.php.cn/link/bf13848f7f02f488b2e12e009a8b0df3"</code>
Sila ambil perhatian bahawa penyemak imbas akan membuat dua permintaan ke API REST:
- Permintaan pilihan HTTP menunjuk ke URL yang sama untuk menentukan sama ada pengepala respons HTTP sah
Access-Control-Allow-Origin
panggilan rehat sebenar
dan mengembalikan respons kosong maya untuk memastikan tiada kerja pendua dilakukan. Access-Control-Allow-Origin
Kejayaan REST sebahagian besarnya disebabkan oleh kesederhanaannya. Pemaju boleh melaksanakan API yang tenang mengikut keutamaan mereka, tetapi ini boleh membawa kepada cabaran lanjut. Untuk melihat 13 amalan terbaik kami untuk membina API yang tenang.
konsistensi endpoint
pertimbangkan titik akhir berikut:
-
/user/123
-
/user/id/123
- Semua ini adalah pilihan yang sah untuk mendapatkan data pengguna 123. Bilangan kombinasi meningkat lagi apabila anda melakukan operasi yang lebih kompleks. Sebagai contoh, mengembalikan sepuluh nama terakhir yang bermula dengan "A" dan bekerja di CompanyX, semak dalam urutan terbalik mengikut tarikh lahir, bermula dengan rekod 51.
/user/?id=123
Akhirnya, tidak kira bagaimana anda memformat URL, tetapi konsistensi API sangat penting. Ini boleh menjadi cabaran bagi asas kod besar dengan banyak pemaju.
REST API Version Control
Perubahan API tidak dapat dielakkan, tetapi URL Endpoint tidak boleh gagal, jika tidak, mereka akan memecahkan aplikasi yang menggunakannya.
API biasanya mengamalkan kawalan versi untuk mengelakkan masalah keserasian. Sebagai contoh,
menggantikan. Kedua -dua titik akhir baru dan lama boleh kekal aktif. Malangnya, ini memerlukan mengekalkan pelbagai API sejarah. Versi lama akhirnya boleh dibuang, tetapi proses ini memerlukan perancangan yang teliti.
Pengesahan API REST /2.0/user/123
API kuiz yang ditunjukkan di atas adalah /user/123
terbuka
Aplikasi klien yang berada dalam domain yang sama seperti API RESTful akan menghantar dan menerima kuki seperti permintaan HTTP yang lain. (Perhatikan bahawa mengambil () dalam pelayar yang lebih tua memerlukan menetapkan pilihan permulaan
.) Oleh itu, permintaan API dapat disahkan untuk memastikan pengguna log masuk dan mempunyai keizinan yang sesuai. Permohonan pihak ketiga mesti menggunakan kaedah pengesahan lain. Pilihan pengesahan biasa termasuk:
- Pengesahan Asas HTTP. Lulus tajuk kebenaran HTTP yang mengandungi pengekodan Base64 dalam tajuk permintaan.
- Kunci API. Geran Aplikasi Permohonan pihak ketiga untuk menggunakan API dengan mengeluarkan kekunci yang mungkin mempunyai kebenaran khusus atau terhad kepada domain tertentu sahaja. Kuncinya diluluskan dalam setiap permintaan dalam header HTTP atau rentetan pertanyaan.
- oAuth. Sebelum sebarang permintaan dibuat, token mesti diperoleh dengan menghantar ID klien dan kunci klien yang mungkin ke pelayan OAuth. Token OAuth kemudiannya akan dihantar dengan setiap permintaan API sehingga ia tamat.
- JSON Web Token (JWT). Token pengesahan yang ditandatangani secara digital disebarkan dengan selamat dalam permintaan dan tajuk tindak balas. JWT membolehkan pelayan menyandikan keizinan akses, jadi tidak perlu memanggil pangkalan data atau sistem yang diberi kuasa lain.
Pengesahan API akan berbeza -beza bergantung kepada persekitaran penggunaan:
- Dalam beberapa kes, aplikasi pihak ketiga akan dianggap sebagai pengguna log masuk lain dengan keizinan tertentu. Sebagai contoh, API MAP boleh mengembalikan laluan antara dua mata ke aplikasi panggilan. Ia mesti mengesahkan bahawa aplikasi itu adalah pelanggan yang sah, tetapi tidak perlu menyemak kelayakan pengguna.
- Dalam kes lain, aplikasi pihak ketiga meminta data persendirian yang dimiliki oleh pengguna tunggal, seperti kandungan e-mel. API REST mesti mengenal pasti pengguna dan kebenarannya, tetapi ia mungkin tidak peduli aplikasi mana yang memanggil API.
REST API Security
RESTFUL API menyediakan cara lain untuk mengakses dan mengendalikan aplikasi. Walaupun ia bukan sasaran penggodam yang sangat ditonton, pelanggan yang tidak berkelakuan baik boleh menghantar ribuan permintaan sesaat dan merosakkan pelayan anda. Keselamatan tidak berada dalam skop artikel ini, tetapi amalan terbaik biasa termasuk:
- menggunakan https
- Gunakan kaedah pengesahan yang kuat
- Gunakan CORS untuk mengehadkan panggilan klien ke domain tertentu
- menyediakan fungsi minimum -iaitu, jangan buat pilihan padam yang tidak diingini
- Sahkan semua URL Endpoint dan Data Utama
- Elakkan mendedahkan token API dalam klien JavaScript
- blok akses dari domain yang tidak diketahui atau alamat IP
- Hentikan muatan besar yang tidak dijangka
- Pertimbangkan had kadar -iaitu, permintaan menggunakan token API atau alamat IP yang sama terhad kepada n per minit
- bertindak balas dengan kod status HTTP yang sesuai dan tajuk cache
- Permintaan rekod dan menyiasat kegagalan
RESTFUL API adalah terhad oleh pelaksanaannya. Tanggapan mungkin mengandungi lebih banyak data daripada yang anda perlukan, atau permintaan selanjutnya diperlukan untuk mengakses semua data.
Pertimbangkan API RESTful yang menyediakan akses kepada pengarang dan data buku. Untuk memaparkan data dari sepuluh buku laris teratas, pelanggan boleh:
- Minta 10 teratas oleh kuantiti jualan (penjual terbaik pilihan)
- butiran. Sambutan mengandungi senarai buku dengan setiap ID pengarang.
/book/
Hantar hingga 10 - Permintaan untuk mendapatkan maklumat terperinci untuk setiap pengarang.
/author/{id}
Jika ini adalah kes penggunaan biasa, anda boleh menukar API RESTful supaya setiap buku yang dikembalikan mengandungi butiran pengarang penuh seperti nama, umur, negara, biografi, dan banyak lagi. Ia juga boleh memberikan butiran lengkap buku -buku lain - walaupun ini dapat meningkatkan muatan tindak balas dengan ketara!
Untuk mengelakkan respons besar yang tidak perlu, API boleh diselaraskan untuk membuat butiran pengarang pilihan -contohnya, ?author_details=full
. Bilangan pilihan yang perlu ditangani oleh penulis API boleh mempesonakan.
Bolehkah Graphql menyelesaikan masalah API REST?
Teka -teki Rest Let Facebook untuk membuat GraphQL, bahasa pertanyaan perkhidmatan web. Fikirkannya sebagai SQL Perkhidmatan Web: Permintaan tunggal mentakrifkan data yang anda perlukan dan bagaimana anda ingin mengembalikannya.
GraphQL menyelesaikan beberapa cabaran yang dibawa oleh API RESTful, walaupun ia memperkenalkan orang lain. Sebagai contoh, respons graphQL caching menjadi sukar.
Pelanggan anda tidak mungkin mempunyai masalah yang sama dengan Facebook, jadi mungkin patut dipertimbangkan GraphQL selepas API RESTFul melebihi had sebenar.
REST API Links and Development Tools
Terdapat banyak alat dalam semua bahasa yang dapat membantu dengan pembangunan API yang tenang. Pilihan yang ketara termasuk:
- swagger: pelbagai alat yang membantu merancang, merekod, mensimulasikan, menguji dan memantau apis rehat
- Postman: Aplikasi Ujian API Restful
- hoppscotch: sumber terbuka postman, alternatif berasaskan web
Terdapat juga banyak API rehat awam untuk jenaka, penukaran mata wang, geokod, data kerajaan, dan setiap topik yang boleh anda fikirkan. Ramai yang percuma, walaupun ada yang memerlukan anda mendaftarkan kunci API atau menggunakan kaedah pengesahan lain. Senarai Kategori Termasuk:
- Mana -mana API
- Senarai API
- apis awam
- Google Apis Explorer
Sebelum melaksanakan perkhidmatan web anda sendiri, cuba gunakan API RESTful dalam projek anda sendiri. Atau, anda boleh mengikuti Facebook, GitHub, Google, dan banyak gergasi lain untuk membina API RESTful anda sendiri.
soalan yang sering ditanya mengenai API REST
Apa itu API REST?
REST API (Interface Pemrograman Aplikasi Pemindahan Negeri Terperinci) adalah satu set peraturan dan konvensyen yang membolehkan aplikasi perisian berkomunikasi dan berinteraksi antara satu sama lain melalui Internet menggunakan prinsip gaya seni bina REST.
Apakah ciri -ciri utama API REST? API REST dicirikan oleh penggunaan sumber, komunikasi pelayan klien yang tidak bertenaga, kaedah HTTP standard (GET, POST, PUT, DELETE), dan antara muka bersatu yang biasanya melibatkan mengakses dan memanipulasi sumber menggunakan URL.
Mengapa ia dipanggil API REST?
REST API (Interface Programming Aplikasi Pengangkutan Negeri Terperinci) dinamakan sempena gaya seni bina yang diikuti, dipanggil REST (pengangkutan negeri terperinci). Istilah "rehat" dicadangkan oleh Roy Fielding dalam tesis PhD 2000, di mana beliau menggariskan prinsip dan kekangan gaya seni bina ini. Nama "rehat" mewakili konsep memindahkan perwakilan status sumber dari pelayan kepada klien.
Apakah faedah menggunakan API REST? API REST memberikan banyak faedah, termasuk kesederhanaan, skalabilitas, kemudahan integrasi, kemerdekaan platform, dan pemisahan kebimbangan. Mereka juga memanfaatkan infrastruktur HTTP yang sedia ada, yang sesuai untuk aplikasi web dan mudah alih.
Adakah API REST terhad kepada aplikasi web? Tidak, API REST tidak terhad kepada aplikasi web. Mereka boleh digunakan untuk memudahkan komunikasi antara pelbagai jenis aplikasi perisian, termasuk aplikasi web, aplikasi mudah alih, dan juga komunikasi pelayan ke pelayan.
Apakah empat komponen API REST?
REST API terdiri daripada empat komponen utama, yang biasanya dikenali sebagai "empat tiang" rehat. Komponen ini membantu menentukan struktur, tingkah laku, dan interaksi API dalam gaya seni bina yang lain. Empat komponen adalah sumber, kaedah HTTP (kata kerja), perwakilan dan antara muka umum.
alat atau perpustakaan apa yang boleh saya gunakan untuk membina API REST? Terdapat banyak alat dan kerangka untuk membina API REST, termasuk Express.js (Node.js), Flask (Python), Ruby on Rails (Ruby), Django (Python), Spring Boot (Java), dan banyak lagi.
Respons ini mengekalkan pemformatan dan penempatan imej asal.
Atas ialah kandungan terperinci Apa itu API REST?. 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



Artikel membincangkan membuat, menerbitkan, dan mengekalkan perpustakaan JavaScript, memberi tumpuan kepada perancangan, pembangunan, ujian, dokumentasi, dan strategi promosi.

Artikel ini membincangkan strategi untuk mengoptimumkan prestasi JavaScript dalam pelayar, memberi tumpuan kepada mengurangkan masa pelaksanaan dan meminimumkan kesan pada kelajuan beban halaman.

Soalan dan penyelesaian yang sering ditanya untuk percetakan tiket kertas terma depan dalam pembangunan front-end, percetakan tiket adalah keperluan umum. Walau bagaimanapun, banyak pemaju sedang melaksanakan ...

Artikel ini membincangkan debugging JavaScript yang berkesan menggunakan alat pemaju pelayar, memberi tumpuan kepada menetapkan titik putus, menggunakan konsol, dan menganalisis prestasi.

Tidak ada gaji mutlak untuk pemaju Python dan JavaScript, bergantung kepada kemahiran dan keperluan industri. 1. Python boleh dibayar lebih banyak dalam sains data dan pembelajaran mesin. 2. JavaScript mempunyai permintaan yang besar dalam perkembangan depan dan stack penuh, dan gajinya juga cukup besar. 3. Faktor mempengaruhi termasuk pengalaman, lokasi geografi, saiz syarikat dan kemahiran khusus.

Artikel ini menerangkan cara menggunakan peta sumber untuk debug JavaScript minifikasi dengan memetakannya kembali ke kod asal. Ia membincangkan membolehkan peta sumber, menetapkan titik putus, dan menggunakan alat seperti Chrome Devtools dan Webpack.

Bagaimana cara menggabungkan elemen array dengan ID yang sama ke dalam satu objek dalam JavaScript? Semasa memproses data, kita sering menghadapi keperluan untuk mempunyai id yang sama ...

Perbincangan mendalam mengenai punca-punca utama perbezaan dalam output konsol.log. Artikel ini akan menganalisis perbezaan hasil output fungsi Console.log dalam sekeping kod dan menerangkan sebab -sebab di belakangnya. � ...
