Sử dụng JSON để truyền nhận dữ liệu trong Restful

Sharing is caring!

Trong bài Sử dụng tham số đường dẫn khi tạo Restful url, các bạn đã biết các truyền dữ liệu theo kiểu tham số của url endpoint rồi. Trong bài này, tui sẽ nói về việc sử dụng JSON để truyển nhận dữ liệu giữa Client và Server, nhưng trước tiên tui phải nói sơ qua JSON cho những ai chưa bao giờ biết JSON là gì.

1. JSON là gì?

JSON là viết tắt của cụm từ JavaScript Object Notation. Do Client chủ yếu sử dụng Javascript để tương tác và JSON chính là cách biểu diễn đối tượng trong Javascript luôn nên không cần phải có các bước parsing phức tạp như đối với XML. Đối với JSON, ta chỉ cần Key-Value để biểu diễn đối tượng cũng như dữ liệu. Ví dụ như sau:

Cặp dấu móc { } sẽ định nghĩa đó là một object, và trong object, có thể chứa object khác, ở đây property (hay là Key) “convertTo” là một object, còn các property khác là kiểu String. Để chứa nhiều object trong một array, ta dùng cặp dấu ngoặc vuông [ ].

Sơ sơ qua JSON là như vậy.

2. Lấy dữ liệu JSON từ Server bằng phương thức HTTP GET:

Ví dụ Client sẽ lấy danh sách các quyển sách thông qua endpoint http://localhost:9000/api/books, Server sẽ trả về danh sách giống như trên bằng JSON. Mở gile routes/api.php lên và thêm đoạn code sau:

$entries là một array chứa các array con là những quyển sách nha các bạn, hàm json() của đối tượng Response trong Laravel nó làm cái nhiệm vụ là convert cái array này sang JSON và trả về cho Client. Trong PHP, việc chuyển từ Array sang JSON và ngược lại rất dễ, các bạn sử dụng 2 cái hàm: json_encode() và json_decode() nha (search google để xem thêm nha). Còn trong Laravel thì nó đã làm sẳn cho mình luôn rồi, nên chỉ việc dùng thôi.

Postman để xem nhé:

 

Giờ tui muốn là Server trả về một object, có một property là “books” cá value là một array chứa các quyển sách trên như vầy thì bên Laravel code làm sao:

Các bạn chỉ cần sửa biến $entries lại như sau:

Lại Postman:

Các bạn chú ý sẽ thấy là cái key trong JSON nó giống với cái key trong Array của PHP nha các bạn.

3. Send dữ liệu JSON về Server bằng phương thức HTTP POST:

Cũng là endpoint http://localhost:9000/api/books nhưng với phương thức POST, chúng ta sẽ gửi về Server một quyển sách mới, Server nhận và append vào danh sách hiện tại và trả lại danh sách mới này cho Client. ví dụ ở đây, danh sách hiện tại có 2 quyển sách rồi nhé:

Nếu viết PHP bình thường, chúng ta phải dùng hàm json_decode() để lấy dữ liệu từ trong JSON ra, nhưng trong Laravel thì nó đã tích hợp luôn cái việc đó trong đối tượng Request. Cho nên khi đó, việc lấy từng giá trị thông qua các key tương ứng cũng giống như lấy dữ liệu từ form POST như kiểu làm bình thường thông qua hàm input() của Request.

Postman tiếp:

Chọn tab Body ở phía trên, sau đó click chọn raw, và chọn kiểu dữ liệu gửi đi là JSON(application/json), khi đó, Postman sẽ tự động thêm cái Header là Content-Type: application/json, nếu không thì bên Server sẽ không nhận được dữ liệu là nội dung JSON nha các bạn.

Tiếp theo, các bạn nhập nội dung JSON cần gửi về Server ở cái khung Text ngay bên dưới, Chọn phương thức là POST và click Send thì các bạn sẽ thấy cái list trả về có thêm cái nội dung quyển sách mới.

Chú ý, cái Body ở trên là để chúng ta nhập dữ liệu và gửi về Server, còn Body bên dưới là kết quả trả về (nếu có) từ Server nha các bạn.

OK, vậy là xong rồi đó, hy vọng các bạn có thể hiểu được cách làm việc với JSON.

Sharing is caring!

Sử dụng tham số đường dẫn khi tạo Restful url

Vincent Le

Tui là Lê Minh Đạt, tên tiếng anh là Vincent(do thích nhân vật Vincent Valentine, ai từng là fan của trò Final Fantasy VII thì sẽ biết nhân vật này, hehe). Đang tập tành làm một blogger viết về mảng lập trình, mong muốn được chia sẻ những gì đã học được, tích góp được trong 10 năm đi làm thợ code.

shares