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
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()
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:
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 rekod sedia ada Padam Padam Padam
/user/
/user/
/user/123
/user/123
/user/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.
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
/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}`); );
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:
Access-Control-Allow-Origin
dan mengembalikan respons kosong maya untuk memastikan tiada kerja pendua dilakukan. Access-Control-Allow-Origin
konsistensi endpoint
/user/123
/user/id/123
/user/?id=123
REST API Version Control
Perubahan API tidak dapat dielakkan, tetapi URL Endpoint tidak boleh gagal, jika tidak, mereka akan memecahkan aplikasi yang menggunakannya.
. 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
.) 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 API akan berbeza -beza bergantung kepada persekitaran penggunaan:
Keselamatan tidak berada dalam skop artikel ini, tetapi amalan terbaik biasa termasuk:
Pertimbangkan API RESTful yang menyediakan akses kepada pengarang dan data buku. Untuk memaparkan data dari sepuluh buku laris teratas, pelanggan boleh:
/book/
/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.
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.
Terdapat banyak alat dalam semua bahasa yang dapat membantu dengan pembangunan API yang tenang. Pilihan yang ketara termasuk:
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:
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.
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.
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.
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!