[ad_1]
Về HTML và REST thì mình đã cố gắng viết một điểm cuối REST trong Go, trong đó tải lên nội dung của một biểu mẫu được gửi trong trình duyệt đến một điểm cuối REST khác, nói cách khác,
Form in Browser —-> My GO Rest API —-> Another REST API
Trong khi làm điều đó mình đã kết thúc việc học một số nguyên tắc cơ bản về cách thức hoạt động của các biểu mẫu HTML. Vì vậy, mình nghĩ rằng sẽ thật tốt khi chia sẻ những kiến thức về HTML cho các bạn.
Bạn đang xem: Enctype= multipart/form-data là gì
multipart / form-data – Đại diện cho một hình thức Multipart. Loại biểu mẫu này được sử dụng khi người dùng muốn tải lên tệp
text / plain – Một loại biểu mẫu mới được giới thiệu trong HTML5, như tên cho thấy, chỉ cần gửi dữ liệu mà không cần mã hóa
Bây giờ, chúng ta hãy xem xét từng loại biểu mẫu với một ví dụ để hiểu rõ hơn về chúng.
Mẫu mã hóa URL
Như tên cho thấy, dữ liệu được gửi bằng loại biểu mẫu này là URL được mã hóa. Lấy mẫu sau
key1 = value1 & key2 = value2
Đối với các hình thức trên, nó sẽ là,
web10_username=sidthesloth&password=slothsecret
Ngoài ra, lưu ý rằng chúng mình có một số tham số truy vấn được truyền trong URL
/urlencoded?firstname=sid&lastname=sloth.
Không phải phần thân được mã hóa URL và các tham số truy vấn được truyền trong URL hành động trông cực kỳ giống nhau? Đó là bởi vì chúng giống nhau. Họ chia sẻ cùng một định dạng đã thảo luận ở trên.
Hãy thử tạo một tệp HTML với mã ở trên và xem cách nó được gửi trong các công cụ dev. Đây là một snap
Những điều cần chú ý ở đây là Content-Type cho biết application/x-www-form-urlencoded, chuỗi truy vấn và trường biểu mẫu được chuyển đến máy chủ theo định dạng như đã thảo luận ở trên.
Lưu ý: Đừng nhầm lẫn với thuật ngữ Dữ liệu biểu mẫu trong ảnh chụp màn hình. Đó chỉ là cách Google Chrome đại diện cho các trường biểu mẫu.
Tất cả đều ổn, nhưng có thêm một chút cho quá trình mã hóa. Chúng ta hãy giới thiệu một số khoảng trắng trong các giá trị được gửi, ở dạng bên dưới giống với giá trị trước nhưng có giá trị tên đầu tiên được thay đổi từ sid sang sid slayer và giá trị tên người dùng đã thay đổi từ sidthesloth sang sid sloth.
Rõ ràng, bạn có thể thấy rằng các khoảng trắng được thay thế bằng ‘% 20’ hoặc ‘+’. Điều này được thực hiện cho cả các tham số truy vấn và thân biểu mẫu.
Đọc phần này để hiểu khi nào có thể sử dụng + và% 20. Điều này bao gồm quá trình mã hóa URL.
Biểu mẫu nhiều phần
Các hình thức nhiều phần thường được sử dụng trong các ngữ cảnh nơi người dùng cần các tệp để được tải lên máy chủ. Tuy nhiên, chúng tôi sẽ chỉ tập trung vào các biểu mẫu dựa trên trường văn bản đơn giản, như vậy là đủ để hiểu cách chúng hoạt động.
Xem thêm: Giấy Phép Con Là Gì ? Thủ Tục Xin Giấy Phép Con
đây là hai điều cần chú ý ở đây, tiêu đề Kiểu nội dung và tải trọng của yêu cầu biểu mẫu. Chúng ta hãy đi qua từng cái một.
Tiêu đề loại nội dung
Giá trị của tiêu đề Kiểu nội dung rõ ràng là nhiều dữ liệu / biểu mẫu. Nhưng nó cũng có một giá trị khác, ranh giới. Giá trị cho điều này trong ví dụ trên được tạo bởi trình duyệt, nhưng người dùng cũng có thể xác định rất rõ nó, ví dụ, ranh giới = sidtheslothboundary. Chúng ta sẽ xem nó hữu ích như thế nào trong phần tiếp theo.
Yêu cầu cơ thể
Tải trọng yêu cầu chứa chính các trường mẫu. Mỗi cặp (tên, giá trị) được chuyển đổi thành một phần thông báo MIME theo định dạng sau,
– >
Nội dung-Bố trí: hình thức-dữ liệu; tên = “>”
>
Định dạng trên được lặp lại cho mỗi cặp (tên, giá trị).
Cuối cùng, toàn bộ tải trọng được kết thúc bởi giá trị biên được thêm vào bằng một -. Vì vậy, toàn bộ yêu cầu trông như,
– >
Nội dung-Bố trí: hình thức-dữ liệu; tên = “>”
>
– >
Nội dung-Bố trí: hình thức-dữ liệu; tên = “>”
>
– > –
Bây giờ, chúng ta thấy cách giá trị biên được sử dụng.
Trong trường hợp của một ứng dụng / x-www-form-urlencoding, loại & ampersand hoạt động như một dấu phân cách giữa mỗi cặp (tên, giá trị), cho phép máy chủ hiểu khi nào và nơi một giá trị tham số bắt đầu và kết thúc.
tên người dùng = sidthelsloth & password = slothsecret
Trong trường hợp biểu mẫu nhiều dữ liệu / biểu mẫu, giá trị biên phục vụ mục đích này. Giả sử nếu giá trị biên là XXX, tải trọng yêu cầu sẽ như thế nào,
–XXX
Nội dung-Bố trí: hình thức-dữ liệu; tên = “tên người dùng”
sidthesloth
–XXX
Nội dung-Bố trí: hình thức-dữ liệu; tên = “mật khẩu”
con lười
–XXX–
Các dấu gạch nối không phải là một phần của giá trị biên mà là cần thiết như một phần của định dạng yêu cầu. Tiêu đề Kiểu nội dung cho yêu cầu trên sẽ là,
Loại nội dung: nhiều dữ liệu / biểu mẫu dữ liệu; ranh giới = XXX
Điều này cho phép trình duyệt hiểu, khi nào và nơi mỗi trường bắt đầu và kết thúc.
Văn bản / mẫu đơn
Các biểu mẫu này khá giống với các biểu mẫu được mã hóa URL, ngoại trừ các trường biểu mẫu không được mã hóa URL khi được gửi đến máy chủ. Chúng không được sử dụng rộng rãi nói chung, nhưng chúng đã được giới thiệu như là một phần của đặc tả HTML 5.
Tránh sử dụng chúng vì chúng có nghĩa là cho sự hiểu biết của con người và cho máy móc.
Như trích dẫn từ thông số kỹ thuật,
Tải trọng sử dụng định dạng văn bản / định dạng được dự định là có thể đọc được. Chúng không thể được giải thích một cách đáng tin cậy bằng máy tính, vì định dạng không rõ ràng (ví dụ: không có cách nào để phân biệt một dòng mới theo nghĩa đen trong một giá trị với dòng mới tại
sự kết thúc của giá trị).
Hy vọng, tôi đã rõ ràng trong việc giải thích những gì tôi thấy .. Nhìn thấy bạn trong những người tiếp theo..Peace ..
[ad_2]