我试图理解当我使用请求模块发出POST请求时我到底得到了什么-它总是JSON吗?似乎我得到的每个响应似乎都是JSON,但我不确定。
其中r
是我的响应对象,当我做:
print r.apparent_encoding
它似乎总是返回ascii
当我尝试type()
时:
>>>print type(r)
<class 'requests.models.Response'
我将print r.text
的输出粘贴到JSON验证器中,它没有报告任何错误。所以我应该假设请求在这里提供JSON对象吗?
响应可以是任何内容。如果您发送到REST端点,它通常会以JSON响应。如果是,requests
将检测到,并允许您通过.json()
方法解码它。
但是你完全有可能发送到一个正常的web URL,实际上假装是一个浏览器,除非服务器做了一些非常聪明的事情,它只会响应标准的HTML,它会提供给浏览器。在这种情况下,执行response.json()
将引发ValueError。
不, POST请求的响应文本完全取决于web服务。一个好的REST API总是会响应JSON,但你并不总是能得到。
PHP中常用的模式是
<?php
$successful_whatever = false;
if (isset($_POST['whatever'])) {
# put $_POST['whatever'] in a database
$successful_whatever = true;
}
echo $twig->render('gallery.twig',
array('successful_whatever' => $successful_whatever));
?>
如您所见,响应文本将是一个呈现的模板(HTML)。我不是说它好,只是说它很常见。
<?php
$successful_whatever = false;
if (isset($_POST['whatever'])) {
# put $_POST['whatever'] in a database
$successful_whatever = true;
}
echo $twig->render('gallery.twig',
array('successful_whatever' => $successful_whatever));
?>