Một vài khái niệm cơ bản về HTTP dành cho các tester

6176

Bài viết được sự cho phép của tác giả Vân Anh

Lâu rồi mới trở lại, vì dạo này mình bận quá bận, lại mới hồi sức nên đã bị chậm tiến độ cam kết khá là nhiều. Hic. Nên hôm nay quyết định quay trở lại với chủ đề không mới, cũng không cũ lắm. Hehe, tuy nhiên tổng hợp lại kiến thức cũng hay mà. 😀

HTTP là gì?

HTTP là viết tắt của từ Hypertext Transfer Protocol – Giao thức truyền siêu văn bản.

HTTP là một giao thức giao tiếp, được sử dụng để gửi và nhận các trang web, các tập tin thông qua internet.

HTTP làm việc bằng cách sử dụng một tác nhân người dùng (có thể là một trình duyệt nào đó) để kết nối tới một máy chủ. Máy chủ này phải được xác định vị trí bằng cách sử dụng một URL hoặc URI. Địa chỉ này luôn bao gồm các ký tự http:// ở đầu. Và thường kết nối tới cổng 80 trên một máy tính cụ thể nào đó.

Tuyển nhân viên tester từ các công ty tập đoàn

HTTPS là gì?

HTTPS là viết tắt của từ Hypertext Transfer Protocol Secure – Giao thức truyền siêu văn bản an toàn. Với giao thức này thì đường truyền sẽ được bảo mật an toàn hơn so với HTTP và URL sử dụng sẽ được bắt đầu với cú pháp https://. HTTPS sẽ thực hiện mã hóa tất các các thông tin được nhận và gửi đi. Do đó có thể ngăn chặn người dùng không tin cậy, có ý đồ xấu như việc  các tin tặc đánh cắp thông tin của người dùng, đặc biệt trong các ứng dụng thanh toán. HTTPS sử dụng cổng 443 để giao tiếp thay vì sử dụng cổng 80 như HTTP.

Một HTTP Request là gì?

Sử dụng HTTP là một cách để truyền tin từ một máy tính sang một máy tính khác thông qua internet.

Một HTTP request được gửi tới một địa chỉ URL cụ thể, và sẽ bao gồm một Động từ, một bộ HTTP Header và Body/ hoặc Payload.

Một ví dụ về HTTP request:

GET https://www.testingexcellence.com/ HTTP/1.1
Accept-Encoding: gzip,deflate
Content-Type: text/plain
Host: testingexcellence.com
User-Agent: Apache-HttpClient/4.5.4 (Java/1.8.0_144)
Accept: text/html,application/xhtml+xml

URL

URL – viết tắt của từ Uniform Resource Locator là một địa chỉ mà chúng ta sử dụng để truy cập tới một website hay một ứng dụng web nào đó. Các URL chúng ta biết đến thường sử dụng để dẫn đến các trang web (http), nhưng cũng có thể được sử dụng cho truyền file (ftp), email (mailto), và các ứng dụng khác.

Hầu hết các trình duyệt web hiển thị URL của trang web ở phía bên trên của trang trên thanh địa chỉ. Một ví dụ về địa chỉ URL điển hình có thể thấy như http://www.abc.com/index.html : ở đây ta có 1 giao thức là http, 1 hostname là http://www.abc.com và một tên file là index.html

Các động từ Request ( Request verb)

Request Verb – là một số động từ chỉ những loại yêu cầu cụ thể nào đó mà các bạn cũng đã khá là quen thuộc như GET, POST, PUT, DELETE.

Một trình duyệt web sẽ thường tạo ra các GET, POST request khi làm việc với các API HTTP, các động từ HTTP thường sử dụng thì có GET, POST, PUT, DELETE.

GET, giống như tên gọi của nó, get là lấy về. Nó sẽ gửi yêu cầu để lấy tài nguyên hoặc đọc thông tin từ máy chủ. Ví dụ là khi ta click vào một link nào đó. Ta có thể nhìn thấy Request GET trên thanh địa chỉ của trình duyệt.

POST, bên cạnh việc lấy thông tin về local, thì POST giúp chúng ta gửi, cung cấp thông tin đến máy chủ, ví dụ việc gửi thông tin đăng nhập hoặc các thông tin trong form đăng ký chẳng hạn. Để tạo một thực thể, chúng ta cần sử dụng POST request. Các POST request sẽ không được hiển thị trên thanh địa chỉ của trình duyệt.

PUT, được sử dụng để gửi yêu cầu cập nhật thông tin trên server. Ví dụ như việc một người dùng đã tồn tại trên hệ thống gửi thông tin cập nhật cho password của mình, lúc này PUT request sẽ được sử dụng để thực hiện việc này.

DELETE, được sử dụng để gửi yêu cầu xóa thông tin trên server.

POST và PUT request sẽ thường có body request. Còn đối với GET và DELETE thì không có.

Request Headers (Tiêu đề của yêu cầu)

Request headers xác định một số thông tin cụ thể như loại trình duyệt, loại nội dung trong message và loại phản hồi nào được chấp nhận.

Một ví dụ về Request Headers:

Content-Type: text/plain
User-Agent: Apache-HttpClient/4.5.4 (Java/1.8.0_144)

Request Body / Payload

Một Playload là phần thân của 1 HTTP request hoặc response.

Một request body có thể là một đoạn text thuần túy, HTML, XML, JSON, Javascript, hoặc một tập các cặp key-value dạng form-data.

Khi bạn mở một web, trình duyệt sẽ nhận payload dạng HTML, nó chính là giao diện mà chúng ta quan sát được trên trình duyệt đó.

Thông thường khi làm việc với các HTTP APIs chúng ta sẽ gửi và nhận các payload dạng JSON hoặc XML.

Không phải tất cả các message HTTP đều phải có payload: POST và PUT có thể có, còn với GET và DELETE thì có thể không có payload.

  Hiểu hơn HTTPS với bồ câu đưa thư
  HTTP là gì? Các khía cạnh cơ bản của HTTP

Một HTTP Response là gì?

Khi một request được gửi đến server, thì server sẽ gửi lại phản hồi cho request đó. Phản hồi từ server sẽ báo cho bạn biết khi request được gửi thành công hay nó đã xảy ra một vấn đề abcd nào đó.

Một phương thức HTTP response được cấu thành từ 3 thành phần: Response status coderesponse headersresponse body, môm na theo tiếng Việt nó là Mã trạng thái phản hồi, tiêu đề phản hồi và phần thân của phản hồi.

Một ví dụ về response:

HTTP/1.1 200 OK
Content-Length: 859
Content-Type: text/html; charset=utf-8
Date: Fri, 23 Feb 2018 14:38:21 GMT
Server: Werkzeug/0.14.1 Python/3.6.3

Response Status Codes (Mã trạng thái phản hồi)

Dưới đây là một số mã phản hồi phổ biến mà chúng ta có thể gặp như:

  • 2xx đại diện cho trạng thái thành công. Thường thấy nhất là code 200 có nghĩa là OK.
  • 3xx đại diện cho việc Chuyển hướng,  và một trong số những code phổ biến là 301 và 303 lần lượt có nghĩa là Chuyển hướng vĩnh viễn hoặc Chuyển hướng bởi lý cho chưa xác định.
  • 4xx để đại diện các vấn đề do ứng dụng lỗi, hai trong số các mã phổ biến mà bất cứ ai trong chúng ta đã từng gặp ít nhất một lần trong đời =)) là 403 và 404 do “Forbidden” và “Not Found”.  Nôm na tiếng Việt là bạn đang truy cập vào một trang bị cấm hoặc trang bạn muốn truy cập không thể tìm được ra :v
  • 5xx mô tả cho trường hợp lỗi máy chủ, đỡ quê hơn thì dùng tiếng Anh là “Server Error”, và một trong số những code phổ biến nhất là mã 500 có nghĩa là “Server Error” :))))

API là gì?

API là Application Programming Interface -.- nôm na google dịch thì là Giao diện lập trình ứng dụng. Đây là giao diện dành cho các ứng dụng, được thiết kế cho các hệ thống máy tính khác sử dụng. Khác với GUI là giao diện người dùng, được thiết kế để cho người sử dụng.

Hầu hết các API hiện đại đều dựa trên HTTP và được sử dụng để truy cập các ứng dụng web được triển khai cho các máy chủ có thể truy cập qua Internet.

Web Service là gì?

Các ứng dụng được truy cập thông qua API HTTP thường được gọi là Web Service. Nói cách khác, một Web Service là một chức năng có thể được truy cập bởi các chương trình khác trên web (HTTP).

Sẽ có bài viết khác chuyên sâu hơn về Web Service, nếu bạn nào nôn nóng quá có thể tham khảo bài viết về Web Service phiên bản tiếng Anh tại đây nhé. Hoặc tiếng Việt cũng có rất nhiều bài viết chi tiết và đầy đủ về Web Service, gõ nhẹ Google là ra liền ah.

JSON là gì?

JSON – Khái niệm nghe khá là nhiều rồi đúng không, nó là viết tắt của cụm JavaScrip Object Notation và là một cách biểu diễn văn bản, cũng là một mã JavaScript hợp lệ. Đặc biệt có nhiều cách đọc :)) Cũng tìm kiếm Google để xem mọi người trên thế giới phát âm nó như thế nào nha :v

{
   "employers":{
      "employee":[
         {
            "id":1,
            "name":"Dan Brown",
            "position":"Director",
            "status":"active",
         }
      ]
   }
}

JSON có thể được coi là một tập hợp các cặp khóa / giá trị phân cấp, trong đó giá trị có thể là:

  • Object (Đối tượng) – Được đặt trong dấu { and }
  • Array (Mảng)  – Được đặt trong dấu [ and ]
  • String (Kiểu chuỗi) – Được đặt trong dấu ” and “
  • Integer (Kiểu số)

Một mảng là một danh sách các đối tượng hoặc các cặp key/ value. Các key là các giá trị String , theo ví dụ bên trên ta có các key như: “employee”, “id”, “name”…

—–

Bài viết tranh thủ dịch từ  Tiếng Anh, mỗi ngày được một đoạn nho nhỏ, nếu có lỗi đâu đó rất mong các bạn góp ý giúp mình nha. Hihi

Bản gốc tại: https://www.testingexcellence.com/http-basics/

Bài viết gốc được đăng tải tại vananhtooo.wordpress.com

Có thể bạn quan tâm:

Xem thêm Việc làm it hấp dẫn trên TopDev