多參數之間,建議用逗號做分隔符

問題:
參數如果是List,應該用什麼分隔符來連接呢?例如:
1、GET方法,擁有參數key1,它的對應值是一個list,值爲value1,value2,用什麼分隔符連接這兩個value值
2、配置文件中,value值也是一個list,又該怎麼拼接?
3、將list保存爲db的一個字段,用什麼分隔符

總結:採用逗號做分隔符。也就是配置文件中,是key=value,value2;GET方法中,url爲http://host/key=value1,value2&otherkey=value3;db字段值key=value1,value2

具體原因如下:

1、先討論第二個情況,如果是配置文件,建議用“,"分隔符
apache的commons-configuration包,可以幫助我們讀取配置文件。它本身包含一個getList方法,這個方法可以將value值轉換爲一個list。value的分隔符,默認是“,",例如配置文件內容爲name=harryli,ponyma,通過getList("names"),能夠直接返回一個list類型,這樣更方便我們做後續操作。apache使用“,"做分隔符,肯定是經過推敲的,而且,如果遵循這個規範,我們也能直接使用getList方法。

2、再討論第一個情況,可以有"+",";",","三個候選:
"+"是url中的特殊字符,傳參如果是加號,會被轉成空格,因此,不能用+號
";"號,在W3C的規範中,認爲“;"可以和“&”一樣,用於參數之間的連接符,例如http://host/?x=1&y=2等同於http://host/?x=1;y=2。既然它擁有這個含義,那我們就不能用“;"作爲參數內容分隔符
”,"號沒有分號的顧慮,同時,考慮到配置文件也建議用","做分隔符,因此對於GET方法,也同樣建議,用","(逗號)作爲參數內容的分隔符

3、接着討論第三個情況,對於數據庫來說,也是保存爲逗號好,因爲mysql有一個方法FIND_IN_SET,可以對逗號拼接的str進行搜索,例如,字段值str_list爲‘1,2,3’,那麼FIND_IN_SET('2',str_list)就能匹配到這條數據,因爲字段'1,2,3'通過逗號分割後,是一個list,有三個值,其中包含了2這個值

綜上所述,一般採用逗號作爲分隔符



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章