随笔 - 14,  文章 - 1,  评论 - 0,  阅读 - 274

web是怎么工作的?

URL:https://www.google.com 域名

首先访问最近的DNS服务器 domain name service

DNS记录了这个域名的ip地址是什么

浏览器向该ip地址发送http/https(传输协议)请求。每台服务器/计算机联网都需要一个ip地址。通过ip地址就能找到该服务器/计算机。

服务器收到请求,将请求递交给80端口监听到http server(apache, unicorn, gunicorn, uwsgi)

http server将请求转发给web application(web application framework: Django, Ruby on Rails, Nodejs, Flask)

web application处理请求

  • 根据当前路径找到逻辑处理模块

  • 根据用户请求(GET + POST)决定如何获取/存放数据

  • 从数据存储服务(数据库或者文件系统)中读取数据

  • 组织数据成一张html网页作为返回结果

浏览器得到结果展示给用户

 

浏览器 <--> DNS                            web server

   <--------------> [http server <--> web application] <--> database

 

浏览器 <--> DNS                                           

   <--> firewall <--> load balancer<-->web server <--> database

                   <-->web server <--> database

             async server(message queue)         memcache

什么是API? application programming interface

提供一些方法函数功能给别人用,别人通过直接函数调用或者http等方式进行调用,得到了返回结果,这就是API。

api设计

https://www.xx.com/api... 目标获得当前登陆用户在某给某个题的所有提交记录

/api/submissions/?problem_id=1000 #后台用当前用户去筛选

不能带user_id,可以被篡改,别人可以登陆

Restful API, 你要获取的数据是什么,一级目录就是什么。使用HTTP的四个动作(POST,DELETE,GET,PUT)来代表对数据的增删查改

所有的筛选条件,创建参数,都放在http的参数里

 

Design News Feed API

设计news feed list的web api请求格式

GET https://www.facebook.com/api/newsfeed/

GET https://api.facebook.com/newsfeed/

 

设计API的返回格式:structured data(json / xml)

返回界面:html

 

设计翻页pagination:

方法1:/api/newsfeed/?page=1

缺点:如果有新数据被插入,翻到下一页可能会看到上一页的内容

方法2:/api/newsfeed/?max_id=xxx (最新的xxx个,id<=max_id的数据)

如何判断有没有下一页?每次多取一个数据,如果取到,把这个数据作为next_max_id返回给前端

mentions的数据格式?<a href="/users/someone/">@someone</a>

缺点1:需要预防javascript injection attack

缺点2: api无法被mobile端共享

mobile显示链接不用<a>

缺点3:url可能会改动

<user username="someone">Hello World</user>

 

posted on   dddddcoke  阅读(2)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示