【问题标题】:make api call to get json data调用api获取json数据
【发布时间】:2017-05-14 05:47:23
【问题描述】:

我试图从这个 api 获取 json 数据,但我得到的只是页面的 html,如果我在浏览器中打开这个链接,我通常会得到这个页面

访问api的基本urlhttp://sc.productrx.com/public/

操作: 获取调查表
HTTP 动词: GET
Rest Resource: 架构
描述参数等: 获取架构表名(“调查”)

这是我迄今为止尝试过的

app.get('/',function(req,res){

   console.log(req.method+" request received at "+req.url);


request({
     url:"https://sc.productrx.com/public/",
     method:"GET",
     qs:{resource:"schema",data_type:"JSON"}
     },function(err,response,body){
          if(err){
              console.log(err);
              res.status(300).json(error.apiError);
            }
          else{
              console.log(body);
              //var body=JSON.parse(body);
              //res.status(200).json({"success":true,"body":body.users});
            }
        });  });

这是控制台日志

    $ heroku local
[WARN] No ENV file found
11:01:03 AM web.1 |  Your server is now running...
11:01:03 AM web.1 |  5000
11:01:07 AM web.1 |  GET request received at /
11:01:09 AM web.1 |  <!DOCTYPE html>
11:01:09 AM web.1 |  <html>
11:01:09 AM web.1 |      <head>
11:01:09 AM web.1 |          <meta charset="utf-8"/>
11:01:09 AM web.1 |          <title>Slim 3</title>
11:01:09 AM web.1 |          <link href='//fonts.googleapis.com/css?family=Lato:300' rel='stylesheet' type='text/css'>
11:01:09 AM web.1 |          <style>
11:01:09 AM web.1 |              body {
11:01:09 AM web.1 |                  margin: 50px 0 0 0;
11:01:09 AM web.1 |                  padding: 0;
11:01:09 AM web.1 |                  width: 100%;
11:01:09 AM web.1 |                  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
11:01:09 AM web.1 |                  text-align: center;
11:01:09 AM web.1 |                  color: #aaa;
11:01:09 AM web.1 |                  font-size: 18px;
11:01:09 AM web.1 |              }
11:01:09 AM web.1 |              h1 {
11:01:09 AM web.1 |                  color: #719e40;
11:01:09 AM web.1 |                  letter-spacing: -3px;
11:01:09 AM web.1 |                  font-family: 'Lato', sans-serif;
11:01:09 AM web.1 |                  font-size: 100px;
11:01:09 AM web.1 |                  font-weight: 200;
11:01:09 AM web.1 |                  margin-bottom: 0;
11:01:09 AM web.1 |              }
11:01:09 AM web.1 |          </style>
11:01:09 AM web.1 |      </head>
11:01:09 AM web.1 |      <body>
11:01:09 AM web.1 |          <h1>Slim</h1>
11:01:09 AM web.1 |          <div>a microframework for PHP</div>
11:01:09 AM web.1 |                      <p>Try <a href="http://www.slimframework.com">SlimFramework</a>
11:01:09 AM web.1 |              </body>
11:01:09 AM web.1 |  </html>

已解决:我正在访问 api 的基地址,我打电话给他们,他们告诉我访问它的正确方法。 http://sc.productrx.com/public/schema/survey

【问题讨论】:

  • 有了问题中的其他详细信息,我在以下 API http://sc.productrx.com/public/schema/survey 上尝试了 GET 请求,它返回一个 JSON 数组。您正在尝试访问 API 基础,这就是您获得http://sc.productrx.com/public/ 的 HTML 页面的原因
  • 是的,第一次使用rest api。经过一番折腾,我发现了这一点。谢谢。

标签: json node.js rest


【解决方案1】:

目标 URL 必须是 JSON 格式的数据。请求库不会自动为您将 HTML 数据转换为 JSON 格式。

例如。以下网址: https://www.instagram.com/facebook/?__a=1

从服务器返回 JSON 数据。

【讨论】:

  • 正确。您在代码中的 URL 不是 API,而只是指向 HTML 页面的链接。
  • 谢谢。我希望我可以 +1,但我的声誉太低了 :(
猜你喜欢
  • 1970-01-01
  • 2017-06-05
  • 2020-07-14
  • 1970-01-01
  • 2014-06-12
  • 2018-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多