- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在工作机会中我经常看到“REST-API”这个词。所以,我想了解 REST-API 到底是什么。我对 Django 有一些经验。嗯,其实我是一个初学者。
我在 GitHub 上发现了一个简单的任务:https://github.com/netguru/python-recruitment-task我唯一不明白的是如何做到这一点:
POST /movies:
Request body should contain only movie title, and its presence should be validated.
Based on passed title, other movie details should be fetched from http://www.omdbapi.com/ (or other similar, public movie database) - and saved to application database.
Request response should include full movie object, along with all data fetched from external API.
它应该是什么样子?
如何验证“存在”?
如何从公共(public)数据库下载数据?
最佳答案
How should it looks like?
也许您将使用 Django 来完成此任务,但您应该通过以下内容了解这个概念,并且可能会适应:
import sys
import requests
API_KEY = '<API_KEY>'
def insert_to_db():
raise NotImplementedError("Implement this function by yourself.")
if __name__ == "__main__":
title = '+'.join([arg for arg in sys.argv[1:]])
# Check if title is found in argument list. It's a validation.
if not title:
raise IndexError("No title entered!")
# The request itself.
response = requests.get(f"http://www.omdbapi.com/?t={title}&apikey={API_KEY}").json()
if response:
print(response)
这是一个简单的程序,它通过您使用的任何终端读取您的输入(电影标题),向您的 API 发出简单的请求(使用请求模块)并获取 JSON 格式的响应。这是它的输出:
$ python api.py city of god
{'Title': 'City of God', 'Year': '2002', 'Rated': 'R', 'Released': '13 Feb 2004', 'Runtime': '130 min', 'Genre': 'Crime, Drama', 'Director': 'Fernando Meirelles, Kátia Lund(co-director)', 'Writer': 'Paulo Lins (novel), Bráulio Mantovani (screenplay)', 'Actors': 'Alexandre Rodrigues, Leandro Firmino, Phellipe Haagensen, Douglas Silva', 'Plot': "In the slums of Rio, two kids' paths diverge as one struggles to become a photographer and the other a kingpin.", 'Language': 'Portuguese', 'Country': 'Brazil, France, Germany', 'Awards': 'Nominated for 4 Oscars. Another 66 wins & 38 nominations.', 'Poster': 'https://m.media-amazon.com/images/M/MV5BMGU5OWEwZDItNmNkMC00NzZmLTk1YTctNzVhZTJjM2NlZTVmXkEyXkFqcGdeQXVyMTMxODk2OTU@._V1_SX300.jpg', 'Ratings': [{'Source': 'Internet Movie Database', 'Value': '8.6/10'}, {'Source': 'Rotten Tomatoes', 'Value': '91%'}, {'Source': 'Metacritic', 'Value': '79/100'}], 'Metascore': '79', 'imdbRating': '8.6', 'imdbVotes': '639,695', 'imdbID': 'tt0317248', 'Type': 'movie', 'DVD': '08 Jun 2004', 'BoxOffice': 'N/A', 'Production': 'Miramax Films', 'Website': 'http://www.miramax.com/movie/city-of-god', 'Response': 'True'}
How to validate the "presence"?
分析该程序应该可以消除您的疑虑。
title = '+'.join([arg for arg in sys.argv[1:]])
# Check if title is found in argument list. It's a validation.
if not title:
raise IndexError("No title entered!")
这部分代码检查标题是否已传递到您的请求。这称为验证,当您处理 API 时,在与其交互之前清理用户输入数据非常重要,否则,它可能会因意外行为而扰乱您的 API。
How to download data from public databases?
这是一个一般性问题,您可能需要进一步解释您要下载的内容。数据库各不相同,API 通过代表您执行查询来连接与数据库的通信。您可能需要详细说明这一点。
但是使用相关 API 下载 JSON 文件非常简单。如果您使用的是 Linux 并且对curl 有点熟悉,只需使用它发出请求并将其输出重定向到文件即可:
curl "http://www.omdbapi.com/?t=the+professional&apikey=<API_KEY>" >> out.json
通过这个示例,您可能会关联一个如何处理外部 API 的示例,然后就由您决定了。
关于python - 与外部 API 交互的基本电影数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56378013/
如何将十进制数字转换为mixed radix表示法? 我猜想给定每个基数数组的输入和十进制数,它应该输出每列值的数组。 最佳答案 伪代码: bases = [24, 60, 60] input = 8
我有 Table-A,其中有“x”行。 (对于这个例子有 8 行) 我通过使用游标创建了列数为“x”的Table-C。 (使其动态化;如果将更多行添加到 Table-A,则会在 Table-C 中创建
我有一个关于对象的(很可能是简单而愚蠢的)问题。我创建了实例“Person”的对象“jon”。当我打电话时 console.log(jon.name) 控制台会给我输出“jon”。到目前为止,一切都很
这个问题已经有答案了: 已关闭11 年前。 Possible Duplicate: javascript function vs. ( function() { … } ()); 抱歉,如果这太基础了
我正在尝试用 Java 重新创建射弹轨迹,但是,我遇到了一些问题。我看过很多解释公式之类的视频,但他们的方程中有一个目标,而我没有。我的意思是,他们有一个范围来计算子弹的下落,但我试图弄清楚子弹最终会
(希望如此)来自一个完整的 Rust 初学者的一个简单问题。我的循环有什么问题? num 计算结果为“69”的速度相当快,但是一旦 num 设置为“69”,循环就永远不会退出。我肯定遗漏了一些明显的东
我在 id="name"的元素上应用“.length”,但它计数为 29 而不是 14。我想知道我的错误在哪里?如果有人可以让我知道,那就太好了。谢谢! var name=document.getEl
我知道这很简单,但由于某种原因我无法让它工作。我正在尝试在 Java 中创建自定义颜色,但它似乎不起作用。 import java.awt.Color; Color deepGreen = new C
我有一个大文件,其中每一行都包含一个子字符串,例如 ABC123。如果我执行 grep ABC file.txt 或 grep ABC1 file.txt 我按预期返回这些行,但如果我执行 grep
我想将以下实体映射转换为 Priority 对象。在 getter 上,当我将“Short”更改为“Priority”并遵循 this.priority 时,它会提示 'basic' 属性类型不应该是
我正在开发一个相当基本的函数,我发现很难弄清楚为什么我会得到我的输出。 def mystery(n): print(n) if n < 4: my
我正在尝试对 WordPress 安装的新闻部分实现同位素过滤。我是 JavaScript/jQuery 的新手,正在尝试随时随地学习。我首先使用 Filters section of the Iso
已关闭。这个问题是 not reproducible or was caused by typos 。目前不接受答案。 这个问题是由拼写错误或无法再重现的问题引起的。虽然类似的问题可能是 on-top
我在另一个实体类中引用一个实体并收到此错误。下面是示例代码。我在 persistence.xml 中也有这些类。 是什么导致了这个问题?我正在使用 Spring 数据 JPA 和 Hibernate。
我正在解析 HTML 并重新格式化图像以使其更好地适应。由于某种原因,当我有多个图像需要解析时,我会超出范围,而且我一生都无法弄清楚为什么。 当 imgArray.count >1 时,我将使用带有递
我是 SQL 新手,正在尝试创建一个基本的子查询。我需要找出经理的平均年龄和实习生的平均年龄之间的差异。 标题为一栏 - 经理或实习生年龄是一列,全部在同一个表中。 我会使用两个子查询来做类似的事情:
我习惯了 csh,所以不得不使用 bash 有点烦人。这段代码有什么问题? if[$time > 0300] && [$time 和 300 && time < 900 )) then mod
我建立了这个页面:http://excelwrestling.com/poola.php即将到来的双重锦标赛。我的大部分数据都是从我的 mySQL 数据库中提取的,现在只有一些示例数据。 我希望链接选
是否有任何原因导致以下内容不起作用: for (i=0;i < someArray.length;i++) { if (someArray[i].indexOf("something") !=
我现在正在学习 Javascript,有一个问题一直困扰着我! 因此,我在这里所需要做的就是在此输入框中键入颜色,单击按钮并将标题更改为键入的颜色(仅当键入的颜色位于变量中指定的数组中时)。 我的代码
我是一名优秀的程序员,十分优秀!