【问题标题】:Postman request with body Form data to json带有正文表单数据的邮递员请求到 json
【发布时间】:2018-09-15 12:28:22
【问题描述】:

邮递员有问题...

一方面,我可以使用表单数据中的正文提出此请求。

但是,当我尝试使用 raw(json) 中的正文发送相同的请求时,我得到了这个:

我正在尝试通过 Angular 5 将数据发送到 Drupal 8 后端。

谢谢!

【问题讨论】:

  • 您的后端是否设计为接收带有 JSON 标头的 HTTP 请求?如果它只接受表单数据,你就有答案了。在你的照片中看不到错误
  • 是的,感谢@JeanRostan 给了我一个clue 实体主体遵循“application/x-www-form-urlencoded”内容类型的编码要求。
  • 您的 API 似乎只接受表单数据身份验证。如果你是后端的设计者,你也可以让它接受 JSON 内容,但你需要处理这种情况

标签: json rest web-services postman form-data


【解决方案1】:

如上所述,如果您正在查看此问题,后端可能不接受 JSON。我遇到了完全相同的问题,但前端不同。对于一个对我来说只是获得初始响应的示例,您可以使用:

const axios = require("axios");
const querystring = require("querystring");

const authenticate = async () => {

.post((req, res) => {
  let authData = {
    grant_type: "password",
    client_id: "id",
    client_secret: "secret",
    username: "name",
    password: "password"
  };

  const authResponse = await axios.post(
    "http://blah.com/endpoint",
    querystring.stringify(authData)
  );

  return res.send(authResponse.data);
}

authenticate()

这是一种 async/await 格式,排除了您可能需要的几个设置步骤,包括 try/catch,但您应该能够采用上述方法并尝试将其转换为您的需求并获得所需的结果。

【讨论】:

    【解决方案2】:

    这取决于后端是否可以接收 JSON 格式。

    就我而言,我正在使用 Drupal 8 Module simple Oauth。而 OAuth 2.0 Bearer 令牌的格式实际上在单独的规范 RFC 6750 中进行了描述。

    更具体的here

    实体主体遵循 HTML 定义的“application/x-www-form-urlencoded”内容类型 4.01 [W3C.REC-html401-19991224]。

    所以,在我的特殊情况下,我将尝试从 angular 发送表单数据。

    谢谢:Jean Rostan

    【讨论】:

    • 你能从 Angular 发出请求吗?我有同样的问题
    • 是的,就像我回答的那样,这取决于后端。
    【解决方案3】:

    尝试将 Content-Type: application/json 添加到 Headers 中

    【讨论】:

    • 完成,没有结果。
    • 通过从该下拉列表中选择JSON (application/json) - 无论如何它都会自动设置标题。
    • 有些 API 也需要在 Headers 中显式发送 Content-Type。例如,Zendesk API。
    • 是的,我明白了,我只是想让您知道,通过在 Postman 中选择该选项,还会将具有该内容类型的标头添加到请求中。所以你不必“必须”手动设置它。
    猜你喜欢
    • 2018-01-19
    • 2022-01-11
    • 1970-01-01
    • 2018-06-25
    • 2020-03-11
    • 1970-01-01
    • 1970-01-01
    • 2019-04-16
    • 1970-01-01
    相关资源
    最近更新 更多