DEV Community 👩‍💻👨‍💻

Cover image for Introduction to HTTP
Mahmoud EL-kariouny
Mahmoud EL-kariouny

Posted on • Updated on

Introduction to HTTP

  • Hypertext Transfer Protocol (HTTP) is a protocol that provides a standardized way for computers to communicate with each other.

  • It has been the foundation for data communication over the internet since 1990 and is integral to understanding how client-server communication functions.

  • HTTP is a protocol that allows the fetching of resources, such as HTML documents.

  • It is the foundation of any data exchange on the Web and it is a client-server protocol, which means requests are initiated by the recipient, usually the Web browser.

  • A complete document is reconstructed from the different sub-documents fetched, for instance, text, layout description, images, videos, scripts, and more.

Features:

Connectionless: When a request is sent, the client opens the connection; once a response is received, the client closes the connection.

  • The client and server only maintain a connection during the response and request.
  • Future responses are made on a new connection.

Stateless: There is no dependency between successive requests.

Not Sessionless: Utilizing headers and cookies, sessions can be created to allow each HTTP request to share the same context.

Media Independent: Any type of data can be sent over HTTP as long as both the client and server know how to handle the data format.

Elements:

Universal Resource Identifiers (URIs):

It has certain components:

Scheme: specifies the protocol used to access the resource, HTTP or HTTPS. In our example HTTP.

Host: specifies the host that holds the resources.

Path: specifies the specific resource being requested.

  • In our example, /tasks.

Query: an optional component, the query string provides information the resource can use for some purpose such as a search parameter.

  • In our example, /term=homework.

Side Note: URI vs URL:

  • You may be unsure what the difference is between a URI (Universal Resource Identifier) and a URL (Universal Resource Locator).

  • These terms tend to get confused a lot, and are even frequently used interchangeably—but there is a distinction.

  • The term URI can refer to any identifier for a resource—for example, it could be either the name of a resource or the address of a resource (since both the name and address are identifiers of that resource).

  • In contrast, URL only refers to the location of a resource—in other words, it only ever refers to an address.

  • So, "URI" could refer to a name or an address, while "URL" only refers to an address.

  • Thus, URLs are a specific type of URI that is used to locate a resource on the internet when a client makes a request to a server.

HTTP Requests:

  • HTTP requests are sent from the client to the server to initiate some operation.
  • In addition to the URL, HTTP requests have other elements to specify the requested resource.
Elements:

Method: Defines the operation to be performed.

Path: The URL of the resource to be fetched, excluding the scheme and host.

HTTP Version: HTTP/2.0

Headers: optional information, success as Accept-Language.

Body: optional information, usually for methods such as POST and PATCH, which contain the resource being sent to the server.

Request Methods:
  • Different request methods indicate different operations to be performed.
  • It's essential to attend to this to correctly format your requests and properly structure an API.
Methods:

GET: ONLY retrieves information for the requested resource of the given URI.

POST: Send data to the server to create a new resource.

PUT: Replaces all of the representation of the target resource with the request data.

PATCH: Partially modifies the representation of the target resource with the request data.

DELETE: Removes all of the representation of the resource specified by the URI.

OPTIONS: Sends the communication options for the requested resource.

HTTP Responses:

  • After the request has been received by the server and processed, the server returns an HTTP response message to the client.

  • The response informs the client of the outcome of the requested operation.

Elements:

Status Code & Status Message.

HTTP Version.

Headers: similar to the request headers, provides information about the response and resource representation.
Some common headers include:

  • Date
  • Content-Type: the media type of the body of the request

Body: optional data containing the requested resource.

Status Codes:
  • As an API developer, it's important to send the correct status code.

  • As a developer using an API, the status codes—particularly the error codes—are important for understanding what caused an error and how to proceed.

Codes fall into five categories:
  • 100 Informational
  • 200 Success
  • 300 Redirection
  • 400 Client Error
  • 500 Server Error
Common Codes:
  • 200: OK
  • 201: Created
  • 304: Not Modified
  • 400: Bad Request
  • 401: Unauthorized
  • 404: Not Found
  • 405: Method Not Allowed
  • 500: Internal Server Error

Top comments (5)

Collapse
 
mahmoudessam profile image
Mahmoud EL-kariouny Author

Thanks a lot for your effort and help :)

Collapse
 
chema profile image
José María CL

It would be nice to add some description and common usage of the status codes

Collapse
 
mahmoudessam profile image
Mahmoud EL-kariouny Author

Thanks for your comment, ok I will add :)

Collapse
 
kryptokn9ght profile image
krypto-kn9ght

✌️

Take a look at this:

Settings

Go to your customization settings to nudge your home feed to show content more relevant to your developer experience level. 🛠