--- marp: true paginate: true math: mathjax theme: buutti title: 1. Introduction to the Web --- # Introduction to the Web ## Contents 1) Web and the Internet 2) Frontend and backend 3) Anatomy of a website 4) Web APIs ## Web and the Internet ### What is the Internet?
* World Wide Web is not the Internet * Internet: connected networks that use the TCP/IP protocol * made out of billions of computers, cables and antennae directing data to the right direction * World Wide Web: URL-based information system
![](imgs/1-web-and-html_0.png)
* WWW is a big part of the Internet but it consists of other kinds of traffic, too: * Email * VoIP (Skype, Discord, etc) * File transfer between computers (FTP) * remote connections to other computers * In other words, the Internet is an infrastructure and WWW is served via it ### What is the Web?
* World wide web (www) is the part of the Internet where browsers fetch and show websites * WWW makes sites and applications accessible to all kinds of devices: * mobile phones, computers, smart watches, TVs... * For the websites to appear on all the different devices similarly, strict rules are needed
| | Browser | Engine | |---------------------------------------------|---------------|---------| | ![w:80](imgs/1-web-and-html_3.png) | **Chrome** | Blink | | ![w:80](imgs/1-web-and-html_4.png) | **Edge** | Blink | | ![w:80](imgs/1-web-and-html_1.png) | **Firefox** | Gecko | | ![w:80](imgs/1-web-and-html_2.png) | **Safari** | WebKit |
## Frontend vs Backend * Web development is split into [**_frontend_** and **_backend_**](https://en.wikipedia.org/wiki/Frontend_and_backend) * Frontend is the website users can actually see * Visual elements of a website or app the user can interact with * Backend is the invisible part * "Server side" where user's data is stored * Backend is not interacted with directly, but gives and modifies its stored data based on user requests * _**Full stack development**_ refers to working on both backend and frontend! ### What is a server or "the cloud"
* A server or "the cloud" is just another computer, or multiple ones * Server software is constantly running on it * Your own computer could be a server! * If you need to save an image, post a comment on a news website, or just load a website, you send a **_request_** to a server * Server then gives an appropriate **_response_** based on the request
![](imgs/1-web-and-html_5.png)
### Backend
* Backend handles e.g., * saving and fetching user data from a **_database_** * user authentication and connecting multiple users together (chat apps!) * Databases are used with _**query languages**_ like **_SQL_** * Backend software can be written with various different programming languages * even with JavaScript! See: [Express](https://expressjs.com/) * Simple websites don't require a dedicated backend
![](imgs/1-web-and-html_6.png)
## Anatomy of a website ### Building blocks of a website * Historically, websites looked something like this * [https://web.archive.org/web/19970129232848/http://www.iltalehti.fi/](https://web.archive.org/web/19970129232848/http://www.iltalehti.fi/) * Nowadays, a website can even be a full-blown application! * [https://open.spotify.com/](https://open.spotify.com/) * Old and new sites alike are written in **_HTML_**, which describes the **_structure_** of the site * In mid-90s, plain HTML was extended with **_CSS_** to implement **_styling_** * The third building block of a website is JavaScript, or **_JS_**, which is used to add **_interactivity_** ### HTML
* HTML stands for **_Hypertext markup language_** * HTML defines the structure of a website * It tells what text, images and containers the website has * You might have seen raw html if your browser has failed due to a slow connection $\Rightarrow$ * [motherfuckingwebsite.com](https://motherfuckingwebsite.com/) * http://catb.org/~esr/open-source.html ```html

This is a Heading

This is a paragraph.

```
![w:340](imgs/1-web-and-html_8.png)
### CSS
* CSS stands for **_Cascading style sheets_** * CSS defines the ***look*** of the website * It tells the fonts, sizes, colors and locations of elements * Can be used to animate elements ```css body { background-color: lightblue; } h1 { color: white; text-align: center; } p { font-family: verdana; } ```
![](imgs/1-web-and-html_9.png) * [bettermotherfuckingwebsite.com](http://bettermotherfuckingwebsite.com/) * https://www.emuurom.com/
### JavaScript * With a dedicated programming language, JavaScript, your website can become interactive * It allows you to add functionality to buttons, send data to / fetch data from a server in real time
![w:300](imgs/1-web-and-html_10.png)
![w:350](imgs/1-web-and-html_11.png)
## Web APIs ### What is a Web API * ***API (Application Programming Interface)*** defines a way of communicating between applications * A Web API defines how a client can communicate with a web server * With the help of APIs, you don't need to create all functionality yourself * Each program that wants to communicate to the outside world defines their own interface * There are some architectural models like **_REST (Representational State Transfer)_** that exist to generalize API design ### Client-side and Server-side APIs * [Client-side APIs](https://developer.mozilla.org/en-US/docs/Learn_web_development/Extensions/Client-side_APIs/Introduction) — called on the web browser (client side): * Browser APIs, built into the browser itself and extend its functionality * For instance, the geolocation API returns coordinates where the browser is located * Third-party APIs, for retrieving data from somewhere on the Web * Server-side APIs — called on the server: * For communicating between servers or the client * Consist of multiple exposed ***endpoints*** with a defined request-response system ### API communication
![w:800](imgs/web-apis.svg)
## Third party APIs * Many services have public APIs that anyone can use * Some services require users to have an [API key](https://en.wikipedia.org/wiki/API_key) * [JSON placeholder API](https://jsonplaceholder.typicode.com/)
![w:900](imgs/third-party-apis.svg)