簡體   English   中英

如何從發布請求中拆分正文

[英]How to split body from a post request

我正在嘗試從郵寄請求中拆分屍體,我想知道這樣做的最佳方法是什么。 我正在考慮通過“&”拆分以提取每個參數,然后通過“ =”以拆分對字段/值

data1=value&data2=value2

它將拆分如下:

data1 value
data2 value2

但是,如果接收到的數據包含“&”或“ =”,則它將不起作用: split方法將值中的該字符解釋為分隔符,將其刪除並創建另一個字段。 最好的示例是在base64中接收的值。 例如,“值”在base64中表示為dmFsdWU =

data1=dmFsdWU=&data2=value2

它將拆分為:

data1 dmFsdWU 
data2 value2

關於我在這里可以做什么建議? 我正在考慮對數據的值進行編碼,因此dmFsdWU =作為dmFsdWU%3D接收,但是我不知道是否有更好的解決方案

謝謝

使用split的第二個參數限制拆分:

in_str = "data1=dmFsdWU=&data2=value2"
param_list = [param_expr.split('=', 1) for param_expr in in_str.split('&')]

結果:

[['data1', 'dmFsdWU='], ['data2', 'value2']]

不足

您尚未描述完整的解釋語法:如果第一個值包含&該怎么辦。 例如,將您的示例更改為

DATA1 = dmFsd&WU&DATA2 =值2

你打算去哪里

data1 dmFsd&WU
data2 value2

在這里獲得什么解析規則? 字段名稱是否有限制,以消除歧義? 例如,如果字段名稱必須為字母數字,那么您的解析工作是可能的,但會變得有些棘手:

  • 找到第一個= ; 這確定了第一個字段名稱
  • 查找下一個& ...
  • 找到下一個= ; 這是第二個字段名稱的結尾
  • 找到以后者=結尾的字母數字序列; 使用它作為第二個字段名稱。

    現在,您已經確定了兩個字段名稱; 其余兩個字符串是值。


然而

請注意,有些病理字符串無法唯一地解析為一對字段/值對。 最簡單地,讓我們舉一個給定的例子:

data1=value&data2=value2

為什么這不是單個字段/值對?

data1 value&data2=value2

只要允許值同時包含&=就會遇到這種情況。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM