Bài 3. Viết rest-server cho project được xây dựng trên Cosmos SDK

Tram Ho

Ở bài trước chúng ta đã code xong phần xử lý logic bên dưới, nhưng hiện tại user vẫn phải tương tác với hệ thống bằng command-line rất thủ công. Ở bài này chúng ta sẽ xây dựng phần rest-server để người dùng tương tác dễ hơn.

1. Các hàm xử lý request được gửi lên từ user bằng phương thức post

Các bạn mở file x/nameservice/client/rest/tx.go lên và thêm các dòng sau vào:

1.1 Create Product

Một số chỗ cần lưu ý:

  • kiểu base request được định nghĩa bởi cosmos sdk
  • giá của product là string ví dụ “10nametoken” sau đó sẽ được dùng hàm sdk.ParseCoins() để convert về dạng sdk.Coins
  • req.Base.From sẽ lấy ra địa chỉ của người gửi request nhưng ở dạng string phải dùng hàm sdk.AccAddressFromBech32() để convert về dạng sdk.AccAddress

1.2 Update product

1.3 Delete product

1.4 Buy Product

2 Các hàm query để xử lý request được gửi lên bằng phương thức get.

Mở file x/nameservice/client/rest/query.go và thêm các dòng sau vào:

2.1 Query Product theo productID

2.1 Query tất cả products

3 Thêm các routes để gọi đến các hàm trong tx.go và query.go

Mở file x/nameservice/client/rest/rest.go và thêm các dòng sau:

4. Test

Ở thư mục gố chạy câu lệnh sau để make lại tools:

Init lại network

Để nguyên terminal đó, mở 1 terminal khác lên để chạy câu lệnh run rest-server

Mở thêm một terminal khác và chạy các câu lệnh sau để test, đầu tiên là jack tạo product:

Kết quả

Tiếp theo là alice mua product:

Kết quả:

Xem lại thông tin của jack và alice để thấy tiền đã được chuyển từ alice sang jack

Kết quả:

Tổng kết

Như vậy là đã xong, nhưng còn một điều là hiện tại user vẫn phải ký và broadcast giao dịch bằng câu lệnh, bài sau – bài cuối cùng trong series này mình sẽ hướng dẫn các bạn viết route cho việc ký và broadcast giao dịch để sau đó có thể test dễ dàng trên PostMan và ghép với giao diện

Link tham khảo

https://tutorials.cosmos.network/nameservice/tutorial/23-run-rest.html

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo