当前位置: 首页 > 知识库问答 >
问题:

Axios Http客户端-如何使用表单参数构建Http Post url

傅穆冉
2023-03-14

我正在尝试创建一个带有一些要设置的表单参数的postHTTP请求。我正在将axios与节点服务器一起使用。我已经有了构建url的java代码实现,如下所示:

JAVA代码:

HttpPost post = new HttpPost(UriBuilder.fromUri (getProperty("authServerUrl"))
            .path(TOKEN_ACCESS_PATH).build(getProperty("realm")));

List<NameValuePair> formParams = new ArrayList<NameValuePair>();

formParams.add(new NameValuePair("username",getProperty ("username")));
formParams.add(new NameValuePair("password",getProperty ("password")));
formParams.add(new NameValuePair("client_id, "user-client"));

我正在axios中尝试做同样的事情。

AXIOS实施:

axios.post(authServerUrl +token_access_path,
        {
                username: 'abcd', //gave the values directly for testing
                password: '1235!',
                client_id: 'user-client'
        }).then(function(response) {
            console.log(response); //no output rendered
        }

在post请求上设置这些表单参数的方法是否正确?

共有3个答案

席俊达
2023-03-14

为什么要引入另一个库或模块来用纯JavaScript做这么简单的事情?这实际上是JS的一行代码,用于生成所需的数据以在POST请求中提交。

// es6 example

const params = {
  format: 'json',
  option: 'value'
};

const data = Object.keys(params)
  .map((key) => `${key}=${encodeURIComponent(params[key])}`)
  .join('&');

console.log(data);
// => format=json&option=value

const options = {
  method: 'POST',
  headers: { 'content-type': 'application/x-www-form-urlencoded' },
  data,
  url: 'https://whatever.com/api',
};

const response = await axios(options);  // wrap in async function
console.log(response);
朱岳
2023-03-14

如果您的目标运行时支持,Axios可以接受一个URLSearchParams实例,该实例还将相应的内容类型标题设置为application/x-www-form-urlencoded

axios.post(authServerUrl + token_access_path, new URLSearchParams({
  username: 'abcd', //gave the values directly for testing
  password: '1235!',
  client_id: 'user-client'
}))

获取API也是如此

fetch(url, {
  method: "POST",
  body: new URLSearchParams({
    your: "object",
    props: "go here"
  })
})
许寒
2023-03-14

您必须执行以下操作:

var querystring = require('querystring');
//...
axios.post(authServerUrl + token_access_path,
    querystring.stringify({
            username: 'abcd', //gave the values directly for testing
            password: '1235!',
            client_id: 'user-client'
    }), {
      headers: { 
        "Content-Type": "application/x-www-form-urlencoded"
      }
    }).then(function(response) {
        console.log(response);
    });
 类似资料:
  • 问题内容: 我正在尝试使用一些要设置的表单参数创建一个postHTTP请求。我正在将axios与节点服务器一起使用。我已经有一个构造URL的Java代码实现,如下所示: JAVA代码: 我正在尝试在axios中做同样的事情。 AXIOS的实现: 在邮寄请求上设置这些表格参数的方法是否正确? 问题答案: 您必须执行以下操作:

  • Hy,我有一个问题使用resteacy客户端方法与PathParam。我解释: 我有一个在客户端和服务器端使用的接口: 在服务器端,这正如预期的那样工作,我有一个具体的类来实现这个接口,我的API是在线的。没问题。我可以从URL调用此API方法:http://myapi.dev/1.0/user/1234/followers 但是,在客户端,我使用以下代码轻松地调用API接口: 我收到一个异常:j

  • 我正试图用Node.js和Express编写一个实用程序,它将使用Spotify API。然而,我一直在试图找出使用Express的“客户端凭证流”来获得使用API的访问令牌的最佳方式... https://developer.spotify.com/documentation/general/guides/authorization-guide/#client-credentials-flow

  • 问题内容: 我有一个node.js Connect服务器,用于检查请求的Cookie。为了在节点中测试它,我需要一种写客户端请求并将cookie附加到它的方法。我知道HTTP请求对此具有’cookie’标头,但是我不确定如何设置和发送它- 我还需要在同一请求中发送POST数据,因此我目前正在使用danwrong的restler模块,但似乎没有让我添加该标头。 关于如何使用硬编码的cookie和PO

  • 我尝试为我的网站提供文件上传/下载服务,并且尝试使用openstack中的对象存储。问题是,我通过php和openstack PHPSDK做这件事没有问题,但是当我试图通过一些javascript做这件事时,我找不到一个好的sdk或方法。我没有使用node,我有一个php服务器和一个javascript客户端。我想直接从javascript客户端上传或下载文件。我不希望文件通过php服务器传输。我

  • 创建客户端有两种方式,一种是直接使用特化的构造器函数,另一种是使用工厂构造器函数。 第一种方式返回的是具体的客户端结构体指针对象,第二种方式返回的是客户端接口对象。 使用特化的构造器函数创建客户端 特化的构造器函数有下面几个: func NewHTTPClient(uri ...string) (client *HTTPClient) func NewTCPClient(uri ...string