2009-01-30 9 views
10

Parametreler arasında OR işlenmesini desteklemek için RESTful sorgusunu nasıl tasarlarsınız? Kaynağımın field1 & alan2 olmak üzere iki alanı olduğunu varsayalım. aşağıdaki sorguyu etkinleştirmek için URL'yi tasarım istiyorsunuz Nasıl:RESTful URL tasarımı - Parametreler arasında OR kullanılarak nasıl sorgulanır

REST

tasarlama sorguları yalındır güzel "field1 = x VEYA field2 = y myresources al", ama ben sadece desteklediğini sorguları gördük VE sorgu alanları arasında. Örneğin./Myresource alan 1 x = & field2 = y

Muhtemel bir çözüm serbest metin ile tek bir sorgu parametresi sağlamak olabildiği kısmı, örneğin:?

GET/myresource q = {field1 = X veya alan 2 = y}

Ancak, bu durum, müşterilerin filtrelenmiş alanları ayrıştırması veya genişletmesi için daha karmaşık hale getirebilir.

Önerileriniz nelerdir?

cevap

10

Sorgu paramları, tanımı gereği değil, yalnızca inert paramlardır - bunları nasıl ele aldığınız size bağlıdır. Eğer bir VE ilişkisi (makul) varsayılan istiyorum

GET /myresources?field1=x&field2=y&inclusive=true 

değilse ve istediğiniz diğer uzantısı elbette mümkündür: bir OR arama için ben öneririm.

http://stackoverflow.com/questions/tagged?tagnames=jquery or css or asp.net or php or web-development or svn

O , veya ; olanlar varsayarak bunları ayırmak için mükemmel mantıklı etiketleri için değil geçerli karakterlerdir: onun değerinde, SO birden çok etiketle soruları bulmak için aşağıdaki biçimi kullandığı için

2

kendilerini. Arama motorları genellikle q=keyword1+keyword2'u kullanır ve herhangi bir + url kodlamasını kendi kendilerine anahtar kelimeler olarak kodlarlar.

1

o size kaynak CONDITION1 ile erişilebilir daima VEYA sadece onları bu şekilde tedavi edebilirsiniz CONDITION2 istiyorsanız ...

bağlıdır ancak her iki olasılığı yapmak istiyorsanız (kullanarak AND veya OR) Eğer annakata dedi bir şey uygulamak gerekir, bir sorgu que sorgu için nasıl eklenmesi gerektiğini gösteren bir parametre ...

Daha esnek bir yaklaşıma sahip olmak istiyorsanız (cond1 ve cond2 veya cond3) başka seçenek görmüyorum ama sen kendi istediğin gibi serbest metinle kendi sorgunuzu ...

Diğer taraftan, aynı alanı her zaman sorgulıyorsanız (alan1, alan2'yi belirttiğiniz için böyle olduğunu sanmıyorum), allemb'nin yaklaşımını kullanabilir ve sadece bazı karakterleri kullanabilirsiniz ("," veya ";") şahsen ...

değerleri ayırmak için, ben

field1 = val1

gibi, mikro sorgu dili çeşit geliştirdik ..val2 (val1 arasındaki field1 ve val2) alan 1 => val2 (field1> val2) alan 1 = VAL1; val2 (alan 1 = VAL1 veya field1 = val2) filed1 = VAL1 (field1 içeren VAL1)

alan 1 = val1..val2 &> VAL3 (iyi val1 ve değer2 ve field1> VAL3 arasındaki field1 ...

, sen bu fikri

olsun ama sonra ve her koşul birleştirmek, böylece bu sadece genişletilmiş bir örnektir waht aleemb'in söylediği ...

İlgili konular