2011-05-05 14 views
0

我在我的iOS應用程序中使用ASIHTTPRequest lib來向Web應用程序發出REST請求。在進行各種請求時,我正盡我所能地使用正確的動詞(GET,POST,PUT,DELETE),但是在發出POST請求時,我不確定我是否理解爲什麼如果將參數包含在POST請求或在URL中。它可以兩種方式工作,爲什麼我應該在POST請求中包含這些參數,而不是將它們包含在URL中?據我瞭解,在POST請求中包含參數的唯一原因是阻止它們在URL中可見,以防有人看着你的肩膀或類似的東西。但是如果我從我的iOS應用程序發出POST請求,並且沒有涉及瀏覽器,那麼我以哪種方式做它真的很重要?iOS開發:在發出POST請求時,如果我在URL中包含參數,真的很重要嗎?

非常感謝您的智慧,我還在學習!

+0

「包含URL中的參數」 - 是否意味着發送GET請求?或POST發送到附有一些請求參數的URL?對於前者來說:它確實在REST語義的意義上有不同的含義。後者我會盡量避免混合兩種數據傳輸。 – Dirk 2011-05-05 18:46:00

回答

2

使用POST請求時,最好將參數放入數據而不是URL中。在你的情況下,它可以將它放入URL中,但這並非總是如此。有些腳本會期望參數位於特定位置,如果它們不在那裏,則不會找到它們。至於POST有什麼用處,它可以讓你發送更多的數據。 URL長度限制爲255個字符,因此如果您想發送更多數據,則需要使用其他方法。 POST請求中的數據也不需要進行編碼以符合URL規範。

+0

謝謝,ughoavgfhw,這是將參數包含在POST請求中而不是URL中的一個很好的理由。 – BeachRunnerFred 2011-05-05 18:57:52

-1

據我所知,將這些參數包含在POST請求中的唯一原因是爲了防止它們在URL中可見,以防有人看着你的肩膀或類似的東西。

你誤解了。

還有其他問題。如果您的網站根據GET請求對數據進行了更改,則垃圾郵件,搜索引擎,瀏覽器預取程序和其他自動化工具可能會觸發潛在的破壞性數據更改。

如果端點不受您的控制,完全有可能它甚至不接受參數作爲GET參數。大多數API需要正確使用GET和POST動詞。

+0

但我不是在談論GET請求,我在談論POST請求以及在數據中包含參數而不是在URL中的原因。 – BeachRunnerFred 2011-05-05 18:57:13

+0

如果您的參數在將它們包含在URL中而不包含數據時起作用,那麼您可能會發送GET請求。它爲什麼這樣工作? – ceejayoz 2011-05-05 20:39:09

相關問題