NodeJS https://newsapi.org/docs控制台日志上的API问题工作正常,但渲染不正常

sg3maiej  于 2023-08-04  发布在  Node.js
关注(0)|答案(1)|浏览(65)

我试图将newsapi.org/docs上的API包含到我的项目中,get请求工作,它在控制台日志中显示结果,但不在ejs页面上。

import express from "express";
import bodyParser from "body-parser";
import axios from "axios";

const app = express();
const port = 3000;
const API_URL = "https://newsapi.org/v2/everything?q=tesla";
const APIKEY ="&apiKey=7160918468a64df9a7bf26e5915c1f50";
app.use(express.static("public"));
app.use(bodyParser.urlencoded({ extended: true }));

app.get("/", (req, res) => {
  res.render("index.ejs");
});
 
 app.get("/apiKey", async (req, res) => {
    try {
      const response = await axios.get(API_URL + APIKEY);
      const result = response.data;
      console.log(result);
      res.render("index.ejs", { content: response.data });
    } catch (error) {
      res.status(404).send(error.message);
    }
  });

app.listen(port, () => {
    console.log(`Server running on port: ${port}`);
  });

<body>

<div class="container col-7">
    <div class="row">
    <div class="col-4">
    <a href="/apiKey" class="btn btn-primary pill-rounded">Get All The NEWs</a> </div>
 

    
    </div>
<div class="col-8">
    <%if (locals.data) {%><div class="img-fluid text-center mt-5">
     <textarea  style="border: black; border-style: solid; width:530px; height:150px ;margin-top: 10px;" readonly>
<%= content.articles %>
        </textarea>
       </div>
        <%}%>
    </div>

字符串
我正在尝试在ejs文件中显示结果。我不知道我做错了什么。

kfgdxczn

kfgdxczn1#

Express docs声明:
要呈现模板文件,请设置以下应用程序设置属性,这些属性在生成器创建的默认应用程序中的app.js中设置。
你应该在你的app.js或index.js或任何你的app文件中设置这个:

app.set('view engine', 'ejs');

字符串
您还需要重新构造项目,以便为每个ejs视图创建一个views文件夹,其中包含不同的文件。
您的视图需要使用News API返回给您的数据,这些数据现在存储在您传递给视图的对象中,在您的情况下,使用该对象的content属性访问,如下所示:

<% content.articles.forEach(function(article) { %>
   <article>
      <h4>
         <%= article.title %>
      </h4>
      <ul>
         <li>Author: <%= article.author %></li>
         <li>Name: <%= article.source.name %></li>
         <li>Published: <%= article.publishedAt %></li>
         <li><a href="<%= article.url %>" target="_blank">Link</a></li>
      </ul>
    </article>
<% }); %>

相关问题