Chúng tôi đã thấy việc sử dụng các hoạt động HTTP get trong hai bài tập trước đó,
nơi chúng tôi sẽ có thể đi và lấy dữ liệu từ
máy chủ và sử dụng nó trong ứng dụng Angular của chúng tôi.
Nhưng có những tình huống mà bạn muốn có thể đăng dữ liệu mới lên máy chủ,
hoặc sửa đổi dữ liệu hiện có trên máy chủ,
hoặc thậm chí xóa dữ liệu.
Vì vậy, đó là nơi mà các bài đăng,
đặt, và xóa các hoạt động của HTTP cho phép chúng tôi thực hiện điều này.
Trong bài tập này, chúng ta sẽ xem xét việc sử dụng các hoạt động put từ
HTTP client cho phép chúng ta sửa đổi một món ăn hiện có ở phía máy chủ.
Bây giờ, tại sao chúng ta cần phải làm điều đó?
Bạn thấy rằng trong một trong các bài tập trước đó,
chúng tôi cho phép người dùng đăng bình luận lên một món ăn,
và sau đó chúng tôi đã có thể chèn chú thích vào đối tượng Dish.
Bây giờ, chúng tôi muốn tiếp tục thông tin món ăn này lên máy chủ,
món ăn được sửa đổi vào máy chủ.
Đây là nơi mà việc sử dụng các hoạt động HTTP PUT đến để giải cứu của chúng tôi.
Vì vậy, bằng cách sử dụng thao tác HTTP PUT,
chúng tôi có thể gửi Dish sửa đổi trở lại máy chủ và sau đó sửa đổi
thông tin Dish hiện có trên máy chủ để
nhận xét mới được thêm vào có thể được duy trì ở phía máy chủ.
Qua đó, khi thông tin được lấy vào một ngày sau đó,
nhận xét mới được thêm vào sẽ có mặt ở đó như là một phần của thông tin Dish.
Vì vậy, đây là những gì chúng ta sẽ khám phá trong bài tập này,
nơi chúng ta sẽ xem xét lưu các thay đổi vào máy chủ.
Vậy làm thế nào để chúng ta làm điều này?
Hãy khám phá điều này trong bài tập.
Để cho phép chúng tôi có thể lưu các thay đổi cho Dish vào máy chủ,
hãy để tôi giới thiệu một phương pháp mới vào dịch vụ Dish ở đây.
Bây giờ, chúng ta sẽ thêm một phương pháp mới được gọi là PutDish vào máy chủ.
Vì vậy, phương pháp PutDish hoạt động như thế nào?
Vì vậy, hãy để tôi giới thiệu các phương pháp PutDish ở đây mà rõ ràng nhận được các món ăn sửa đổi
như tham số của nó và sau đó nó sẽ trả lại một quan sát của loại Dish.
Vì vậy, điều này sẽ trả lại Dish đã được đưa vào phía máy chủ.
Bây giờ, một khi Dish được sửa đổi ở phía máy chủ,
thông tin Dish được sửa đổi sẽ được máy chủ gửi trở lại,
và sau đó Dish được sửa đổi này sẽ được chuyển
lại cho client để client có thể tích hợp nó,
và sau đó cập nhật giao diện người dùng để phản ánh sự thay đổi cho Dish.
Bây giờ, rõ ràng, chúng tôi không muốn phản ánh sự thay đổi đối với
giao diện người dùng cho đến khi thông tin Dish được lưu ở phía máy chủ.
Vì vậy, đó là nơi chúng tôi sẽ sử dụng
phương pháp PutDish mà chúng tôi giới thiệu vào dịch vụ Dish.
Vì vậy, làm thế nào để chúng ta thiết kế phương pháp PutDish?
Vì vậy, điều đầu tiên mà chúng ta cần làm là thiết lập một số tùy chọn HTTP để chúng tôi thông báo cho
máy chủ về những gì
đang được gửi trong tin nhắn ở đây.
Vì vậy, chúng tôi sẽ thiết lập một số thông tin tiêu đề ở đây.
Vì vậy, đối với các tiêu đề, chúng tôi sẽ thiết lập HttpHEaders
mới ở đây, và trong HttpHEaders mới,
chúng ta hãy thiết lập các tiêu đề như
Content-Type của loại ứng dụng JSON.
Vì vậy, chúng tôi đang chỉ định cho máy chủ của chúng tôi rằng thông điệp yêu cầu đến
chứa thông tin dưới dạng
một đối tượng json trong cơ thể của thông điệp yêu cầu đến.
Vì vậy, máy chủ sẽ có thể trích xuất
thông tin Dish từ cơ thể của tin nhắn, phân tích nó,
và sau đó có thể tồn tại Dish sửa đổi đến máy chủ,
và sau đó gửi lại thông tin Dish Cập Nhật từ phía máy chủ.
Bây giờ, một khi chúng tôi đã thiết lập các tùy chọn ở đây,
sau đó chúng tôi sẽ sử dụng
HTTP client và sau đó
làm một put mà rõ ràng mang Dish trong cơ thể của thông điệp,
và sau đó chúng tôi sẽ chỉ định Baseurl+dishes và +dish.id.
vì vậy, đó là URL mà chúng tôi đang gửi các hoạt động put như vậy,
Baseurl+'Dishes/ '+ dish.id.
vì vậy, từ kiến thức REST API của
bạn, bạn sẽ thấy lý do tại sao chúng tôi thực hiện một thao tác put đến điểm kết thúc này.
Sau đó, tham số thứ hai là Dish chính nó mà chúng tôi
nhận được như là tham số đến phương pháp PutDish,
và sau đó tham số thứ ba là HttpPoptions mà chúng tôi chỉ cần thiết lập một thời gian ngắn trước đây.
Sau đó, một khi chúng tôi có được điều
đó, sau đó chúng tôi sẽ có thể đường ống
bất kỳ lỗi để phương pháp HandleError của chúng tôi nghe, đó là nó.
Vì vậy, cuộc gọi này để đặt trên phía máy chủ sẽ cho phép
thông tin Dish được liên tục ở phía máy chủ và sau đó máy chủ
sẽ trả lại thông tin món ăn được cập nhật trở lại cho chúng tôi,
và sau đó chúng tôi sẽ trả lại rằng trở lại thành phần của chúng tôi,
nơi các thành phần sau đó có thể sử dụng đó để hiển thị thông tin Dish cập nhật.
Vì vậy, đây là sửa đổi mà chúng tôi làm cho dịch vụ Dish.
Bây giờ, đi vào thành phần dishdetail,
trong thành phần dishdetail,
để tôi giới thiệu thêm một biến ở đây
gọi là dishcopy mà sẽ giữ
một bản sao của Dish sửa đổi cho đến khi nó được đăng lên máy chủ.
Vì vậy, đĩa rửa chén sẽ chứa các món ăn đã được sửa đổi.
Vì vậy, đi vào các thông số tuyến đường ở đây.
Vì vậy, những gì chúng tôi làm là bất cứ lúc nào các thông tin Dish được sửa đổi ở đây trong
các thông số tuyến đường, cũng cùng với lưu thông tin món ăn này này.dish,
tôi cũng sẽ lưu một
bản sao vào đĩa cũng để cả Dish và
dishcopy chứa bản sao chính xác của cùng một Dish ở đây.
Vì vậy, đó là sửa đổi mà chúng tôi sẽ làm ở đây.
Bây giờ, trong phương pháp onSubmit,
vì vậy ở đây chúng tôi có phương pháp onSubmit ở đây,
nơi chúng tôi đang sửa đổi các đối tượng ở đây.
Vì vậy, ở đây, bạn nhận thấy rằng chúng tôi đã ban đầu đẩy bình luận cho đối tượng Dish ở đây
, thay vào đó, chúng tôi sẽ đẩy bình luận cho đối tượng dishcopy.
Lý do tại sao tôi đang làm điều này là tôi muốn đầu tiên sửa đổi đối tượng dishcopy,
sau đó tôi muốn đăng nó lên máy chủ,
và sau đó khi máy chủ trả lời lại với
các thông tin món ăn sửa đổi về phía máy chủ,
sau đó tôi sẽ tiếp tục thông tin đó vào Dish ở đây.
Vì vậy, sau khi thực hiện các dishcopy ở đây,
sau đó chúng tôi sẽ nói này.Dishservice.Putdish,
và sau đó chúng tôi sẽ cung cấp cho PutDish
các dishcopy như là tham số
bởi vì dishcopy chứa phiên bản sửa đổi của món ăn ở đây.
Vì vậy, chúng tôi sẽ nói dishcopy,
và sau đó khi chúng tôi nhận được trả lời từ phía máy chủ như vậy,
trong đăng ký, chúng tôi sẽ nói Dish và ngay tại đó,
chúng tôi sẽ xử lý các Dish đến đây.
Vì vậy, trong đây, chúng tôi sẽ nói đăng ký Dish và sau đó chúng tôi sẽ nói,
này.dish tương đương với món ăn ở đây,
và vì lợi ích của sự hoàn chỉnh,
tôi cũng sẽ duy trì cùng một thông tin vào đĩa đơn ở đây.
Bây giờ, nếu có một lỗi,
sau đó sẽ phải xử lý lỗi.
Vì vậy, để HandleError, chúng tôi sẽ nói,
errmess, và sau đó tại thời điểm
đó, chúng tôi sẽ thiết lập điều này.dish để null,
và sau đó bản sao này cũng để null bởi vì ngay bây giờ các món ăn là không hợp lệ,
và sau đó chúng tôi sẽ nói này.Ermess là
bất kỳ errmess, đó là nó.
Đó là sửa đổi mà chúng ta sẽ thực hiện cho phương pháp onSubmit.
Vì vậy, bằng cách sử dụng phương pháp này.Dishservice.putdish,
chúng tôi đang gửi trong bản sao được cập nhật ở đây,
không phải là Dish ở đây,
và sau đó khi máy chủ trả lời lại cho chúng tôi với Dish sửa đổi
, tại thời điểm đó, chúng tôi sẽ tiếp tục thông tin vào này.dish.
Vì vậy, tại thời điểm đó,
giao diện người dùng của chúng tôi sẽ được cập nhật với phiên bản cập nhật để Dish,
tôi cũng vẫn tồn tại cùng một thông tin để dishcopy,
và sau đó nếu tôi gặp phải một lỗi,
sau đó tôi sẽ thiết lập này.dish để null và this.dishcopy để null
và sau đó thiết lập các thông báo lỗi một cách thích hợp ở đây.
Vậy là vậy. Hãy lưu các thay đổi và sau đó
đi và xem ứng dụng của chúng tôi trong trình duyệt.
Lưu các thay đổi, chúng ta hãy quay lại trình duyệt.
Đi vào trình duyệt, bây giờ chúng ta hãy vào menu và sau đó đi đến một món ăn cụ thể ở đây.
Đối với món ăn cụ thể,
chúng ta hãy đăng bình luận ở đây.
Vì vậy, hãy để tôi đăng một bình luận ở đây với một đánh giá ở đây.
Vì vậy, như bạn thấy, khi nhận xét trở nên hợp lệ,
bản xem trước của nhận xét xuất hiện ở đó.
Bây giờ chúng ta hãy gửi bình luận này.
Khi bạn gửi bình luận,
bạn sẽ ngay lập tức thấy rằng bình luận vừa được đăng vào danh sách món ăn của tôi.
Bây giờ, trước đó, nếu bạn làm mới chế độ xem,
thì nhận xét này sẽ biến mất.
Bây giờ hãy để tôi làm mới chế độ xem và sau đó bạn sẽ nhận thấy rằng bình luận
sẽ vẫn là một phần của danh sách các món ăn ở đây.
Vì vậy, như bạn có thể thấy ở đây,
bình luận vẫn còn tồn tại ở đây.
Để tiếp tục cho bạn thấy rằng thực sự bình luận đã được tồn tại ở phía máy chủ,
chúng ta hãy đi và nhìn vào nhật ký của máy chủ trong thiết bị đầu cuối.
Quay trở lại các thiết bị đầu cuối,
bây giờ chúng ta sẽ thấy rằng trong nhật ký của thiết bị đầu cuối,
bạn thấy một phương pháp PUT /dishes/0 mới.
Vì vậy, điều đó cho thấy rằng Dish
đã được sửa đổi đã được duy trì trở lại máy chủ ngay tại đó và sau đó,
tất nhiên chúng tôi đã có các món ăn bằng cách làm mới
giao diện người dùng và vì vậy đó là lý do tại sao chúng tôi đang
lấy thông tin món ăn một lần nữa từ phía máy chủ.
Vì vậy, điều này cho thấy rằng chúng ta có thể sử dụng
các hoạt động HTTP PUT để duy trì Dish sửa đổi vào máy chủ,
và sau đó khi chúng tôi nhận được các món ăn cập nhật,
chúng tôi có thể cập nhật giao diện người dùng tương ứng.
Với điều này, chúng tôi hoàn thành bài tập này.
Đây là thời điểm tốt để bạn thực hiện một GET cam kết với tin nhắn,
lưu các thay đổi vào máy chủ này.