【问题标题】:One area of confusion on technical test技术测试的困惑之一
【发布时间】:2017-04-09 01:43:00
【问题描述】:

我刚从前端开发训练营毕业,正在经历我的第一次技术测试。除了我希望得到一些意见的一个方面之外,这一切似乎都非常简单。我不太确定公司在这里问什么,想知道是否有人可以更好地解释它?

我将使用 HTML 和 CSS 重新创建网页的个人资料部分(姓名、电子邮件等),我知道该怎么做。有一个 JavaScript 组件涉及我很困惑的 HTTP POST 请求。有执行配置文件部分更改的后端 API。

我没有得到 AJAX 调用的 URL,而是提供了以下说明:“可以注释掉进行 AJAX 调用的实际行。简单地假设您将收到 200 响应以空字符串作为正文。假设 csrf_token 为 #####"。我得到了数字,但我忽略了它们。此外,还有这一行:“后端 API 接受带有 application/x-www-form-urlencoded 正文的 POST 请求”。

在我的训练营中,我没有做过任何 POST 请求,只有 GET。有没有人能够就这个问题的确切要求提供一些指导?我的第一步是使用 POSTMAN,但没有 URL,不知道该怎么做。

编辑:

从各种谷歌搜索这些请求是如何提出的,到目前为止,我已经想出了下面的代码,但仍然缺少很多(可能)。这个想法是,如果用户要输入新电子邮件(或新名称、密码等),则会发出 POST 请求以进行此更新。

我被告知我不允许在这个测试中使用任何 jQuery,所以我一直在尝试学习如何仅在 JavaScript 中执行此操作。另外,我也不确定 csrf_token 是从哪里来的。

var xhr = new XMLHttpRequest();
var url = /* URL */;
var params = ;

xhr.open('POST', url, true);

xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
xhr.setRequestHeader('Content-length', params.length);
xhr.setRequestHeader('Connection', 'close');

xhr.onreadystatechange = function () {
    if (xhr.readyState == 4 && xhr.status == 200) {
        alert(xhr.responseText);
    }
};

xhr.send(params);

【问题讨论】:

    标签: api post xmlhttprequest csrf content-type


    【解决方案1】:

    我的理解是,您实际上不必提出请求,只需在代码中准备好它的位置,也许会被注释掉。您的代码应该有来自 API 的硬编码 200 OK“响应”,正文为空,表明更改配置文件有效。因此,实际上发出请求的一行可以替换为请求结果的模拟对象之类的东西,您可以使用它(但文本说响应无论如何都是空的,因此您不需要模拟很多)。

    我认为您的代码仍应显示(在注释中,或在实际注释掉的请求之前的前面的请求设置行中)您将如何提出请求,如何传递 csrf 令牌,如何设置内容-如果需要做任何事情(可能不需要),向application/x-www-form-urlencoded 提出的请求类型,以及如何以该格式传递参数。

    【讨论】:

    • 非常感谢您的评论,这无疑为我提供了从哪里开始的方向。我已经对我的问题进行了编辑,并添加了我设法提出的代码以及有关此请求应该做什么的更多信息。由于我参加的训练营主要使用 jQuery,因此不允许在此测试中使用 jQuery,这给我增加了一层额外的复杂性。如果您能根据我的编辑提供一些额外的指导,我们将不胜感激。
    猜你喜欢
    • 2012-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-25
    • 2011-12-06
    • 2021-12-15
    相关资源
    最近更新 更多