URL'de parametreler ve sorgu dizeleri arasında pek bir fark görmüyorum. Öyleyse fark nedir ve biri diğerine göre ne zaman kullanılmalıdır?
URL'de parametreler ve sorgu dizeleri arasında pek bir fark görmüyorum. Öyleyse fark nedir ve biri diğerine göre ne zaman kullanılmalıdır?
Yanıtlar:
Sorgu bileşeni , ilk olarak belirtilir ?
bir URI. "Sorgu dizesi" eşanlamlı olabilir (bu terim URI standardında kullanılmaz).
Sorgu bileşenlerine sahip HTTP URI'lerine bazı örnekler:
http://example.com/foo?bar
http://example.com/foo/foo/foo?bar/bar/bar
http://example.com/?bar
http://example.com/?@bar._=???/1:
http://example.com/?bar1=a&bar2=b
( sorgu bileşeninde izin verilen karakterlerin listesi )
Sorgu bileşeninin "biçimi" URI yazarlarına bağlıdır. Yaygın bir kural ( ancak URI standardı söz konusu olduğunda bir kuraldan başka bir şey değildir ¹) anahtar-değer çiftleri için sorgu bileşenini, aka. parametreler , yukarıda geçen örnekte gibi: bar1=a&bar2=b
.
Bu tür parametreler, diğer URI bileşenlerinde, yani yol² ve parçada da görünebilir. URI standardı söz konusu olduğunda, hangi bileşenin ve hangi formatın kullanılacağı size bağlıdır.
Yol, sorgu ve parçadaki parametrelerin bulunduğu örnek URI:
http://example.com/foo;key1=value1?key2=value2#key3=value3
¹ URI standardı , sorgu bileşeni hakkında şunları söylüyor :
[…] Sorgu bileşenleri genellikle tanımlayıcı bilgileri "anahtar = değer" çiftleri şeklinde taşımak için kullanılır […]
² URI standardı , yol bileşeni hakkında şunları söyler :
[…] Noktalı virgül (";") ve eşittir ("=") ayrılmış karakterler, genellikle o segment için geçerli parametreleri ve parametre değerlerini sınırlamak için kullanılır. Virgül (",") ayrılmış karakter genellikle benzer amaçlar için kullanılır.
Parametreler, URL yolu içinde görünebilen ve bir noktalı virgül karakteriyle ( ;
) başlayabilen anahtar / değer çiftleridir .
Sorgu dizesi yoldan (varsa) sonra görünür ve bir soru işareti karakteri ( ?
) ile başlar .
Hem parametreler hem de sorgu dizesi anahtar / değer çiftleri içerir.
Bir GET
istekte, parametreler URL'nin kendisinde görünür:
<scheme>://<username>:<password>@<host>:<port>/<path>;<parameters>?<query>#<fragment>
Bir POST
istekte, parametreler URL'nin kendisinde görünebilir, ancak aynı zamanda veri akışında (içerik olarak bilinir) görünebilir.
Sorgu dizesi her zaman URL'nin bir parçasıdır.
form-data
POST yöntemi kullanılırken parametreler veri akışına gömülebilir, böylece URL'de görünmeyebilirler. Evet, bir POST
istek parametreleri form verileri olarak ve URL'de tanımlayabilir ve bu tutarsız değildir çünkü parametreler birkaç değere sahip olabilir.
Şimdiye kadar bu davranış için hiçbir açıklama bulamadım. Sanırım bazen bir istekteki parametreleri "göstermek" POST
, hatta bir GET
isteği işleyen kodun, kodun a POST
. Elbette bu, bir URL'deki parametreleri destekleyen sunucu kodu ile çalışabilir.
Daha iyi içgörüler elde edene kadar, parametreleri yalnızca isteklerin form-data
veri akışında kullanmanızı öneririm POST
.
Kaynaklar: