问题描述
有很多视频和网站试图解释后端与前端,但是不幸的是,它们都没有以您知道如何开发后端驱动的网站的方式来解释它(至少我还没有发现什么好方法)。
所以,我想确保我理解它,并请您确认或纠正我关于此主题的问题。
示例:
我想建立Mini-Google。我有一个包含1000个存储网站的数据库。
假设1:
每次我在搜索栏中输入内容时,自动填充建议都会更改。这意味着,每次键入时,都会调用另一个网站/ API,以返回当前的自动填充建议。在开发者网站上,这意味着该网站例如是一个Python脚本,该脚本使用当前输入的单词作为Parameter进行调用,并返回所有建议,例如JSON:
// Client Side Script
function ontype(input):
suggestions = get("https://api.googlemini.com/suggestions?q=" + str(input))
show(suggestions)
假设2:
这也意味着我可以手动调用包含Python脚本的网站,并提供一个随机单词,它将始终返回一个JSON,其中包含该单词的自动填充建议。
问题1:
如果A#1
的结果是true
,而A#2
的结果是false
,那么如何防止用户在脚本调用时仍返回结果的同时随机访问“ API”?
假设3:
按Enter键后,将调用我的网站googlemini.com/search?...。当google.com/search每次搜索新查询(或进入第2页等)时都会重新加载时,我认为,当服务器收到客户端请求时,它会首先搜索其数据库,并对结果进行排序,而不是调用API然后返回整个html作为静态网页:
// Server Side Script
@app.route("/search")
function oncall():
query = getparam("q")
results = searchdatabase(query)
html = buildhtml(results)
return html
问题2:
我经常听到(或至少以此方式理解)数据库和Web服务器是2个独立的服务器。那将如何工作?这是否意味着数据库服务器也需要可通过Web访问(当然它将具有安全层等,但从技术上来说也可以)?如何从Web服务器访问数据库服务器?
问题3:
从技术上讲,还有其他任何方式来构建后端服务吗?
就是这样。我还要感谢视频,网站或其他建议,以了解如何从技术上设置和/或保护后端服务器。
谢谢。
解决方法
对于第一个问题,您可以采用一种防止误用的方法。 您可以做的是在api中添加Auth标识符(例如Auth令牌)以标识用户,并且每次用户访问api时,只要计数在一定时间范围内超过限制,就可以将计数保存在服务器n上,您可以拒绝呼叫。限制的设置方式不会给诚实用户带来麻烦,也不会惩罚错误的用户。还有更复杂,更有效的方法,但这是基本思想。
关于问题号,让我向您解释一个简单的概念,数据库是一种非常有效,资源充足且昂贵的数据存储解决方案,我们从不希望将其作为可变存储之类的工具来使用。我们始终希望在调用获取数据过程中访问数据库的数据更新数据。因此,我们以数据方式进行操作,而不必为数据库创建单独的服务器。问题是,我们主要是使databse可以被android,ios,windows的各种平台访问。因此最好添加一些抽象并将数据库保持为独立实体。
最后,我不太了解您的意思,但是我列出了一些后端技术,其中一些可能被单独使用,而有些则没有其他工具。
- Django
- 烧瓶
- Djnago休息
- GraphQL
- SQL
- PHP
- 节点
- Deno