Điểm:1

?_format=json không tạo JSON cho tệp, REST

lá cờ us
J.g

Tôi đang sử dụng Drupal 9.3 với REST UI, RESTful Web Services và Serialization được bật. Đối với giao diện người dùng REST, tôi có cấu hình sau cho các tệp:

phương pháp: NHẬN, ĐĂNG, XÓA, VÁ

Các định dạng yêu cầu được chấp nhận: json, xml

Nhà cung cấp xác thực: cookie,

nhưng khi tôi cố lấy json cho một tệp (bằng cách nối thêm ?_format=json vào url), tôi chỉ lấy lại tệp đó (nói cách khác, trang vẫn giống như không có ?_format=json). Điều này chỉ xảy ra đối với các tệp, cả phương tiện và nút tạo json như bình thường.

Có ai có kinh nghiệm này hoặc biết làm thế nào để sửa chữa nó?

J.g avatar
lá cờ us
J.g
Ví dụ: khi tôi có một số phương tiện, chẳng hạn như `baseurl/media/1`, tôi có thể lấy json bằng cách thay đổi url thành `baseurl/media/1?_format=json`, tương tự với các nút, `baseurl/node/ 1?_format=json`, tôi muốn làm điều tương tự với các tệp như `baseurl/sites/default/files/2021-06/test_0.txt`
Điểm:1
lá cờ in

Điều này là do Drupal cung cấp tệp từ hệ thống tệp mà không cần xử lý.

Nếu bạn muốn một tệp được phân phối dưới dạng JSON (bất kể điều đó có nghĩa là gì). Bạn cần một bộ điều khiển tải tệp, sau đó thực hiện json_decode trên nội dung và trả về kết quả là Symfony\Component\HttpFoundation\JsonResponse.

Và bạn cũng cần một lộ trình cho phương thức điều khiển đó.

J.g avatar
lá cờ us
J.g
Tôi khá mới với Drupal, bạn có thể cung cấp một số hướng dẫn về cách thực hiện điều đó không (tạo bộ điều khiển và định tuyến)
Rainer Feike avatar
lá cờ in
Bạn có thể tìm thấy tất cả những điều này, bao gồm các ví dụ về mã tại drupal.org, tức là tại đây: https://www.drupal.org/docs/drupal-apis/routing-system/introductory-drupal-8-routes-and-controllers- ví dụ
Điểm:0
lá cờ cn

Bạn không thể thêm ?_format=json đến một url tệp tại www.example.com/sites/default/files bởi vì đó chỉ là thư mục của các tập tin trang web.

Vậy tại sao Drupal cung cấp cho bạn json khi bạn thêm ?_format=json đến www.example.com/node/123?_format=json hoặc www.example.com/media/123?_format=json? Đó là bởi vì đây là thực thể.

Vì vậy, làm thế nào bạn có thể sử dụng ?_format=json với các tập tin? Bạn sẽ cần sử dụng các thực thể.

Cách dễ nhất để làm điều này là với mô-đun Media, được tích hợp vào lõi.

Để thử điều này:

  1. Cài đặt mô-đun phương tiện.
  2. Đi đến /admin/cấu trúc/phương tiện.

Theo mặc định, một số loại phương tiện cơ bản sẽ được tạo (âm thanh, tài liệu, hình ảnh, video từ xa và video).

Kiểm tra tài liệu loại phương tiện vì nó là một ví dụ tốt về việc sử dụng tệp.

Bạn cũng có thể dễ dàng tạo các loại phương tiện mới cho trường hợp sử dụng cụ thể của mình.

Sau đó, bạn có thể sử dụng ?_format=json trên các URL phương tiện mà bạn tạo.

Nhược điểm của phương pháp này là bạn vẫn không thể lấy json từ đường dẫn thư mục tệp; thay vào đó, bạn sẽ phải sử dụng url thực thể phương tiện.

Để tự động đặt các url của thực thể phương tiện dựa trên một mẫu, bạn có thể sử dụng Pathauto.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.