Làm cách nào để chuyển mảng làm tham số truy vấn trong PHP?

Tương tự như vậy, không có sự thống nhất về cách các đối tượng nên được biểu diễn trong các tham số truy vấn, không có cách tiêu chuẩn hóa để định dạng các mảng giá trị trong các tham số truy vấn

Mảng trong tham số truy vấn đôi khi được biểu diễn bằng cách lặp lại một tham số nhiều lần

?foo=bar&foo=qux

Đôi khi bằng cách lặp lại một tham số cùng với dấu ngoặc vuông trống

?foo[]=bar&foo[]=qux # URL-encoded: ?foo%5B%5D=bar&foo%5B%5D=qux

Đôi khi chỉ cần cung cấp một danh sách các giá trị được phân tách bằng dấu phẩy

?foo=bar,qux

Tại sao rất nhiều cách khác nhau?

Có thể có một số yếu tố. Nó có thể phản ánh cách thức hoạt động của triển khai cơ bản [e. g. khung phụ trợ, kho dữ liệu]. Có thể do ngôn ngữ lập trình triển khai, do cú pháp hoặc “phong cách” của ngôn ngữ đó. Nó cũng có thể chỉ đơn giản là vấn đề sở thích và một quyết định cụ thể của nhà thiết kế API

Ví dụ về "trường"

Một số API có cách trả về một phần đối tượng trong phản hồi, nghĩa là các đối tượng có một số trường giới hạn. Hãy xem các nhóm người khác nhau đã nghĩ như thế nào về việc định dạng tham số truy vấn ________ r12 đó. Và đối với từng trường hợp sử dụng, chúng ta sẽ xem cách lập mô hình tham số truy vấn đó trong RAML

API JSON

Máy khách CÓ THỂ yêu cầu điểm cuối chỉ trả về các trường cụ thể trong phản hồi trên cơ sở mỗi loại bằng cách bao gồm tham số trường[TYPE]

Giá trị của tham số trường PHẢI là danh sách được phân tách bằng dấu phẩy [U+002C COMMA, “,”] đề cập đến [các] tên của trường sẽ được trả về

Nếu một máy khách yêu cầu một tập hợp các trường bị hạn chế cho một loại tài nguyên nhất định, thì một điểm cuối KHÔNG ĐƯỢC bao gồm các trường bổ sung trong các đối tượng tài nguyên của loại đó trong phản hồi của nó

[nguồn.

Đây là những gì nó trông giống như

?fields[articles]=title,body&fields[people]=name

và đây là cách nó có thể được mô hình hóa trong RAML

queryParameters:
/^fields\[[a-zA-Z]\]+$/: # matches `fields[]`
type: string
pattern: “[^,]+” # matches both `title,body` and `name`

API Bitbucket

Theo mặc định, mỗi điểm cuối trả về bản trình bày đầy đủ của tài nguyên và trong một số trường hợp có thể là nhiều dữ liệu. Ví dụ: truy xuất danh sách các yêu cầu kéo có thể lên tới một tài liệu khá lớn

Để có hiệu suất tốt hơn, bạn có thể yêu cầu máy chủ chỉ trả lại những trường bạn thực sự cần và loại bỏ dữ liệu không mong muốn. Để yêu cầu phản hồi một phần và thêm hoặc xóa các trường cụ thể khỏi phản hồi, hãy sử dụng tham số truy vấn trường

[nguồn. https. // nhà phát triển. người bản địa. com/bitbucket/api/2/reference/meta/phản hồi một phần]

Nó trông như thế nào

?fields=-*,+foo,+bar

và làm thế nào nó có thể được mô hình hóa trong RAML

queryParameters:
fields:
type: string
pattern: [-|\+]?[^,]+

API Google Drive

Theo mặc định, máy chủ sẽ gửi lại bản trình bày đầy đủ của tài nguyên sau khi xử lý các yêu cầu. Để có hiệu suất tốt hơn, bạn có thể yêu cầu máy chủ chỉ gửi những trường bạn thực sự cần và thay vào đó nhận được một phần phản hồi

Để yêu cầu phản hồi một phần, hãy sử dụng tham số yêu cầu trường để chỉ định các trường bạn muốn trả về. Bạn có thể sử dụng tham số này với bất kỳ yêu cầu nào trả về dữ liệu phản hồi

[nguồn.

Nó trông như thế nào

?fields=kind,items[title,characteristics/length]

và làm thế nào nó có thể được mô hình hóa trong RAML

________số 8

Sử dụng Đặc điểm RAML để kiểm soát chi tiết

Trong một số trường hợp và cụ thể là trong trường hợp sử dụng “các trường” đó, có thể hữu ích khi có quyền kiểm soát chi tiết đối với các trường được chuyển đến tham số truy vấn “các trường” đó

Dưới đây là một ví dụ tận dụng và để xác định bộ trường có thể được chuyển đến tham số truy vấn "trường"

Bạn muốn chuyển một mảng từ trang này sang trang khác bằng URL làm tham số. Mảng có thể là mảng một chiều hoặc mảng nhiều chiều

Dung dịch

Để truyền mảng bằng URL, chúng ta phải tạo chuỗi truy vấn được mã hóa URL của mảng đó rồi truyền qua URL. Chúng ta có thể làm điều đó theo hai cách-

Phương pháp 1. Sử dụng hàm http_build_query[]

Bước 1. Chuẩn bị mảng để chuyển qua URL

Hàm http_build_query[] có thể chuyển đổi một mảng thành chuỗi truy vấn được mã hóa URL tương đương. Xem ví dụ sau-

Chủ Đề