请求-响应总是JSON吗?

2024-04-26 05:01:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图理解,当我使用Requests模块发出POST请求时,我到底得到了什么——总是JSON吗?似乎我得到的每个响应都是JSON,但我不确定。你知道吗

其中r是我的响应对象,当我这样做时:

print r.apparent_encoding

它似乎总是返回ascii

当我尝试type()

>>>print type(r)
<class 'requests.models.Response'

从验证器中{d}粘贴到它的输出中,我没有报告任何错误。那么,我应该假设请求在这里为我提供了JSON对象吗?你知道吗


Tags: 模块对象json粘贴modelsresponsetypeascii
2条回答

,POST请求的响应文本完全由web服务决定。一个好的restapi总是用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)。我不是说它好,只是说它很普通。你知道吗

回应可以是任何东西。如果您已经发布到REST端点,它通常会用JSON响应。如果是这样,requests将检测到它,并允许您通过.json()方法对其进行解码。你知道吗

但是你完全有可能发布到一个普通的web URL,实际上是假装成一个浏览器,除非服务器做了一些非常聪明的事情,否则它只会用它提供给浏览器的标准HTML来响应。在这种情况下,执行response.json()将引发ValueError。你知道吗

相关问题 更多 >

    热门问题