Nasıl filtreleme/arama Dinlendirici bir tasarım için?
Şu anda PHP ve Dinlendirici bir API tasarımı oluşturuyorum. Ancak, başarısız benim ilk tasarım uygulama olmuştur.
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
Şimdiye kadar gayet normal, değil mi?
Benim sorunum ilk GET /users
ile. İstek vücuttaki parametreleri listesini filtrelemek için göndermeyi düşünüyorum. Bu süper uzun bir url olmadan karmaşık filtreler belirlemek mümkün gibi olmak istiyorum çünkü
GET /users?parameter1=value1¶meter2=value2¶meter3=value3¶meter4=value4
Bunun yerine gibi bir şey olsun istedim:
GET /users
# Request body:
{
"parameter1": "value1",
"parameter2": "value2",
"parameter3": "value3",
"parameter4": "value4"
}
çok daha okunabilir ve karmaşık filtreler ayarlamak için imkanı verir.
Her neyse, file_get_contents('php://input')
GET
istekleri için istek vücut dönmedi. Ben de http_get_request_body()
, denedim ama paylaşılan kullanıyorum barındıran pecl_http
yok. Emin değilim zaten yardımcı olurdu.
this question buldum ve muhtemelen bir istek vücuda sahip olmaması gerektiğini fark etti. Biraz belirsiz oldu, ama onlar buna karşı tavsiye.
Şimdi bunu yapmak için ne emin değilim. Nasıl filterng işlev/Huzurlu bir arama tasarımı mı?
POST
, kullanabilirim sanırım ama çok Huzurlu görünmüyor.
CEVAP
Dinlendirici bir arama uygulamak için en iyi yolu arama kendisi bir kaynak olarak kabul etmek. Sonra bir ara oluşturuyorsunuz çünkü POST fiil kullanabilirsiniz. Bir YAZI kullanmak için tam anlamıyla bir veritabanı oluşturmak için bir şey gerekmez.
Örneğin:
Accept: application/json
Content-Type: application/json
POST http://example.com/people/searches
{
"terms": {
"ssn": "123456789"
},
"order": { ... },
...
}
Kullanıcı açısından bir arama oluşturuyorsunuz. Bu Uygulama Detayları alakasız. Bazı Dinlendirici bir API bile kalıcılık gerek olmayabilir. Bu uygulama bir detay.
Dinlendirici arama için tasarım URL...
Nasıl gerçek zamanlı bir arama gerçekl...
Nasıl dava Vim / küçük harf duyarlı ar...
Nasıl (arama) gıt tarihinde kaydedilmi...
Nasıl bir setTimeout için bir parametr...