Saat ini saya sedang merancang dan mengimplementasikan API RESTful di PHP. Namun, saya tidak berhasil menerapkan desain awal saya.
GET /users # list of users
GET /user/1 # get user with id 1
POST /user # create new user
PUT /user/1 # modify user with id 1
DELETE /user/1 # delete user with id 1
Sejauh ini cukup standar, bukan?
Masalah saya dengan yang pertama GET /users
. Saya sedang mempertimbangkan mengirim parameter di badan permintaan untuk memfilter daftar. Ini karena saya ingin dapat menentukan filter kompleks tanpa mendapatkan url yang sangat panjang, seperti:
GET /users?parameter1=value1¶meter2=value2¶meter3=value3¶meter4=value4
Sebaliknya saya ingin memiliki sesuatu seperti:
GET /users
# Request body:
{
"parameter1": "value1",
"parameter2": "value2",
"parameter3": "value3",
"parameter4": "value4"
}
yang jauh lebih mudah dibaca dan memberi Anda kemungkinan besar untuk mengatur filter yang kompleks.
Bagaimanapun, file_get_contents('php://input')
tidak mengembalikan badan GET
permintaan untuk permintaan. Saya juga mencoba http_get_request_body()
, tetapi shared hosting yang saya gunakan tidak ada pecl_http
. Tidak yakin itu akan membantu.
Saya menemukan pertanyaan ini dan menyadari bahwa GET mungkin tidak seharusnya memiliki badan permintaan. Itu agak tidak meyakinkan, tetapi mereka menyarankan untuk tidak melakukannya.
Jadi sekarang saya tidak yakin apa yang harus saya lakukan. Bagaimana Anda merancang fungsi pencarian / penyaringan RESTful?
Saya kira saya bisa menggunakannya POST
, tapi itu sepertinya tidak begitu tenang.