如何从API检索用户的中级故事?

Tom*_*ero 21 medium.com-publishing-api

我正在尝试通过显示一些带有帖子图片和原始媒体出版物链接的卡片将中型博客整合到应用程序中.

从Medium API文档中我可以看到如何检索出版物和创建帖子,但它没有提到检索帖子.是否正在使用Medium的API检索当前可能的用户的帖子/故事?

Ant*_*dao 43

API是只写的,不用于检索帖子(中等工作人员告诉我)

您可以简单地使用RSS源:

https://medium.com/feed/@your_profile
Run Code Online (Sandbox Code Playgroud)

您可以通过GET简单地获取RSS提要,然后如果您需要JSON格式,只需使用像rss-to-json这样的NPM模块就可以了.

  • 并非作者的所有媒体帖子都会显示在摘要中 (8认同)
  • 如何获取中型提要的下一页? (3认同)
  • 我为Antonio在上面提到的rss-to-json包制作了一个微服务包装程序,这也使得将数据轻松拉到很容易:https://clay.run/services/nicoslepicos/rss-to-json。如果您想对其进行参数化,以便端点始终只提取某些特定的提要,只需使用“ clay fork nicoslepicos / rss-to-json”派生此端点,然后将其放入始终始终返回的硬编码提要中即可。另外,还有其他微服务:https://clay.run/services/nicoslepicos/medium-get-users-posts,它专门使用Medium RSS feed。 (2认同)

Har*_*hva 10

如果您打算使用JavaScript或jQuery或Angular等从客户端获取它,则需要构建可为您的供稿提供服务的API网关或Web服务。对于PHP,RoR或任何服务器端都不应该这样。

您可以直接以JSON格式获取它,如下所示:

https://medium.com/@yourhandle/latest?format=json    
Run Code Online (Sandbox Code Playgroud)

就我而言,我在Express应用程序中做了一个简单的Web服务,并将其托管在Heroku上。React App会通过Heroku公开API,并获取数据。

const MEDIUM_URL = "https://medium.com/@yourhandle/latest?format=json";

router.get("/posts", (req, res, next) => {
  request.get(MEDIUM_URL, (err, apiRes, body) => {
    if (!err && apiRes.statusCode === 200) {
      let i = body.indexOf("{");
      const data = body.substr(i);
      res.send(data);
    } else {
      res.sendStatus(500).json(err);
    }
  });
});
Run Code Online (Sandbox Code Playgroud)

  • 这不再有效。不幸的是,Cloudflare 添加了验证码挑战。 (5认同)

小智 8

现在这个网址:

https://medium.com/@username/latest?format=json
Run Code Online (Sandbox Code Playgroud)

位于 Cloudflare 的 DDoS 保护服务之后,因此您通常会收到一个 HTML,而不是始终以 JSON 格式提供您的提要,该 HTML 假设呈现网站以完成 reCAPTCHA,并且不会让您从 API 请求中获得任何数据。

以及以下内容:

https://medium.com/feed/@username
Run Code Online (Sandbox Code Playgroud)

有最新的 10 个帖子的限制。

我建议使用我为此目的制作的免费 Cloudflare Worker。它用作外观,因此您不必担心帖子是如何从源、reCAPTCHA 或分页获取的。

关于它的完整文章

活生生的例子。要获取以下项目,请使用 API 提供?next=的 JSON 字段的值添加查询参数next


Cha*_*wki 7

const MdFetch = async (name) => {
  const res = await fetch(
    `https://api.rss2json.com/v1/api.json?rss_url=https://medium.com/feed/${name}`
  );
  return await res.json();
};
Run Code Online (Sandbox Code Playgroud)

const data = await MdFetch('@chawki726');


小智 6

将您的帖子作为 JSON 对象

您可以替换您的用户名而不是@USERNAME。

https://api.rss2json.com/v1/api.json?rss_url=https://medium.com/feed/@USERNAME


Cas*_*ogt 5

使用REST方法,您可以执行此操作:GET https://api.medium.com/v1/users/{{userId}}/publications这将返回标题,图像和项目的URL.更多详情:https://github.com/Medium/medium-api-docs#32-publications.

您还可以将"?format = json"添加到Medium上的任何URL的末尾,然后返回有用的数据.

  • 这很棘手,但是当他们说“出版物”时,并不是说“用户的帖子”。正如安东尼奥所说,访问用户帖子的唯一方法是通过RSS。[查看此问题](https://github.com/Medium/medium-api-docs/issues/51) (4认同)