Rumah > Soal Jawab > teks badan
Saya telah membangunkan RESTFul API applet WeChat sebelum ini, menggunakan rangka kerja ThinkPHP5.0.24 Baru-baru ini saya ingin menaik taraf kepada ThinkPHP6.0.2 Struktur direktori ialah: --app --api --controller --v1 --Index Versi .php Ia juga boleh ditulis terus ke laluan dalam format berikut: Route::get('api/:version/home','api/:version.Index/home'); .0.2, sila rujuk https://blog.csdn.net/qq_35422558/article/details/100563723, dalam artikel ini, cipta folder api di bawah fail laluan dalam direktori akar tapak web penghalaan fail dengan struktur seperti --route --api -- route.php app.php--verdor menulis Route::get('api/:version/home','api/:version.Index/home') dalam apirute.php. [b]Tidak sah selepas ujian[/b].
Dengan merujuk manual pembangunan ThinkPHP6, telah dinyatakan dengan jelas bahawa alamat penghalaan tidak lagi menyokong modul/pengawal/operasi, tetapi masih menyokong pengawal/operasi atau kaedah kelas. Jadi terdapat tiga penyelesaian. Yang pertama: kaedah yang ditakrifkan dalam kelas boleh ditulis sebagai Route::get(':version/home','appapicontroller:versionindex@home'). url akses ialah http://localhost/[b]api[/b]/v1/home. Definisi laluan di bawah aplikasi harus menambah nama aplikasi Jika ia ditulis dalam routeapp.php, URL akses ialah http://localhost/v1/home. Ingat untuk tidak menambah apa-apa tambahan.
Jenis kedua: Menentukan pengawal/operasi hanya boleh ditulis dalam direktori aplikasi routeroute.php Selepas ujian, nama fail route.php boleh ditakrifkan sewenang-wenangnya. Ia tidak boleh ditakrifkan dalam routeapirouute.php, dan ujian itu tidak sah. Route::get(':version/home',:version.Index/home') mengalih keluar bahagian nama aplikasi semasa mentakrifkannya dan menambahkannya apabila mengakses URL, iaitu http://localhost/api/v1/ home
Jenis Ketiga: Gunakan pengawal berbilang peringkat dalam mod aplikasi tunggal --app --controller --api --v1 --Index.php --admin --Index.php --home --Index.php Pada masa ini , laluan ditakrifkan dalam Routeapp.phpRoute::get('api/:version/home',api.:version.Index/home')
Masalah ini tidak disebut dalam banyak tutorial ThinkPHP6 dan banyak carian pada Internet tidak berfungsi selepas ujian. Jadi ringkasannya adalah seperti berikut: 1. Pengawal berbilang peringkat mod aplikasi tunggal menggunakan direktori api dan v1 sebagai direktori subdirektori dan strukturnya adalah seperti di atas projek, saya rasa ini lebih munasabah, supaya kedua-dua pentadbir dan rumah boleh menggunakan paparan dan model yang sama.
2. Dalam mod berbilang aplikasi, anda mesti memasang sambungan mod berbilang aplikasi, komposer memerlukan topthink/think-multi-app, dan kemudian memadam folder pengawal PHP think build api menjana direktori aplikasi set auto_multi_app=true. Rangka kerja dinilai berdasarkan sama ada terdapat satu aplikasi atau berbilang aplikasi, buat direktori laluan dalam direktori aplikasi dan fail route.php dalam direktori . Tidak perlu nama aplikasi. Hanya tambahkannya pada URL apabila diakses. Route::get(':version/home',:version.Index/home') sepadan dengan url: http://localhost/api/v1/home
3 Kaedah ini tidak biasa digunakan. tetapi jika Menurut analisis di atas, ia boleh ditakrifkan dalam apirouteroute.php dan routeapp.php, tetapi URL yang diakses adalah berbeza yang pertama mesti ditambah dengan nama aplikasi api, dan yang terakhir mestilah tidak tambah apa-apa.
4 Jika anda digesa Tiada fail input dinyatakan semasa memasukkan URL di atas Masalah ini boleh diselesaikan dengan menambahkan index.php ke http://localhost/index.php. Cadangannya ialah untuk menambah ? selepas index.php RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L] dalam public.htaccess, iaitu RewriteRule ^(.*)$ index.php?/ $1 [QSA ,PT,L]