1. Trang chủ
  2. » Công Nghệ Thông Tin

Xây dựng web service dùng API REST ful Service

42 1,2K 3

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 42
Dung lượng 2,14 MB

Nội dung

XÂY DỰNG VÀ TRIỂN KHAI WEB SERVICE CHO ỨNG DỤNG DI ĐỘNGHiện nay, nhu cầu về sự tương tác giữa người dùng, giữa client – server trong các ứng dụng đang ngày càng nâng cao. Vì vậy, công nghệ Web Service được ra đời nhiều ưu điểm như: Có thể chạy trên nhiều nền tảng khác nhau, sử dụng các giao thức và các chuẩn mở, nâng cao khả năng tái sử dụng… Với lợi thế khi đa phần các kỹ thuật của Web Service đều được xây dựng dựa trên mã nguồn mở và được phát triển theo các chuẩn đã công nhận, công nghệ Web Service đang được các nhà phát triển ứng dụng lựa chọn như một giải pháp tối ưu và hiệu quả nhất. Cùng với xu thế đó, Web Service chính là một phần kiến thức không thể thiếu đối với các lập trình viên di động chuyên nghiệp. Môn học “Xây Dựng Và Triển Khai Web Service Cho Ứng Dụng Di Động” với hi vọng giúp bạn bổ sung những kiến thức cần thiết và nâng cao kỹ năng phát triển ứng dụng di động thực tế. Sau khi hoàn thành môn học này, các bạn sẽ có khả năng:Tự xây dựng Web Service hoàn chỉnh sử dụng: LinQ, Entity Framework.Triển khai Web Service lên server.Tương tác giữa Web Service với ứng dụng trên thiết bị di động.Tương tác Web Service với các Web Service khác.Tự xây dựng dự án với Web Service hoàn chỉnh.

Trang 1

Xây dựng Web Service dùng API REST ful Service

Bài 1: Xây dựng Web Service dùng API RESTful Service (phần 1)

Trong bài này Tui sẽ trình bày cách tạo web service dùng API RESTful Service, mộtnền tảng mới được hỗ trợ từ net version 4.0 trở lên Những bạn lập trình về thiết bị

di động cần phải hiểu được các khái niệm cũng như cơ chế vận hành sử dụng API RESTful, theo Tui thấy nó khá hay và rất tiện lợi trong việc triển khai các dự án liên quan tới tương tác dữ liệu trên Server

Trước khi triển khai webservice, các bạn cần đọc và hiểu khái niệm qua 4 mục dưới đây:

1 Giới thiệu về ASP.NET Web API

2 Giới thiệu cơ bản về RESTful Service

3 Các nguyên tắc cơ bản để tạo ra RESTful Service

4 Xây dựng Web Service

1.Giới thiệu về ASP.NET Web API

ASP.NET Web API là gì?

Là framework giúp chúng ta tạo ra các Web API – API trên nền web (HTTP).

Web API là các dịch vụ Web (Web service) được xây dựng dựa trên HTTP sử dụng

mô hình lập trình convention (như ASP.NET MVC)

Trang 2

Đặc điểm Web API (.NET 4.0 trơ lên)

 Giúp cho việc xây dựng các HTTP service rất đơn giản, nhanh chóng

 Mã nguồn mở (Open Source) và có thể được sử dụng bởi bất kì client nào hỗ trợ XML, JSON

 Hỗ trợ đầy đủ các thành phần HTTP: URI, request/response headers, caching,versioning, content formats

 Có thể host trong ứng dụng hoặc trên IIS

 Kiến trúc lý tưởng cho các thiết bị có băng thông giới hạn như các thiết bị di động

 Định dạng dữ liệu có thể là JSON, XML hoặc một kiểu dữ liệu bất kỳ

 Làm mới và hiện đại hóa các mẫu dự án mặc định

 Mẫu dự án trên điện thoại di động

 Nhiều tính năng mới để hỗ trợ các ứng dụng di động

 Tùy chỉnh sinh mã(code)

 Tăng cường hỗ trợ cho các phương pháp bất đồng bộ

 Đọc danh sách đầy đủ tính năng trong các ghi chú phát hành

Trang 3

Ưu điểm của Web API

 Cấu hình đơn giản hơn nhiều so với WCF

 Hiệu suất(performance) cao

 Hỗ trợ RESTfull đầy đủ

 Hỗ trợ đầy đủ các thành phần MVC như: routing, controller, action result, filter, model binder, IoC container, dependency injection, unit test, …

 Mã nguồn mở (Open source)

2 Giới thiệu cơ bản về RESTful Service

-Là một dịch vụ web đơn giản sử dụng HTTP và tính chất của REST

-Nó tuân thủ theo 4 nguyên tắc thiết kế cơ bản sau:

 Sử dụng các phương thức HTTP một cách rõ ràng

 Phi trạng thái

 Hiển thị cấu trúc thư mục như URls

 Chuyển đổi linh hoạt JavaScript Object Notation (JSON) và XML hoặc cả hai

3 Nguyên tắc cơ bản để tạo ra RESTful Service

4 nguyên tắc thiết kế cơ bản sau:

Nguyên tắc 1: Sử dụng các phương thức HTTP một cách rõ ràng

Thiết lập một ánh xạ 1-1 giữa các hành động: tạo, đọc, cập nhật và xoá (CRUD) các quá trình vận hành và các phương thức HTTP:

POST (HttpPost) – Tạo một tài nguyên trên máy chủ

GET (HttpGet) – Truy xuất một tài nguyên

Trang 4

PUT (HttpPut) – Thay đổi trạng thái một tài nguyên hoặc để cập nhật nó

DELETE (HttpDelete) – Huỷ bỏ hoặc xoá một tài nguyên

Nguyên tắc 2: Phi trạng thái

Ta xem mô hình giữa trạng thái và phi trạng thái để dễ so sánh:

Mô hình phi trạng thái:

Mô hình trạng thái:

Nguyên tắc 3: Hiển thị cấu trúc thư mục như URls

Cấu trúc địa chỉ của RESTful service:

 Giấu các đuôi tài liệu mở rộng của bản gốc trong máy chủ (.jsp, php, asp)

 Để mọi thứ là chữ thường (thực ra là không phân biệt, nhưng cũng nên tuân thủ để khỏi phải nhớ HOA-thường lung tung)

 Thay thế các khoảng trống bằng gạch chân hoặc gạch nối (một trong hai loại)

 Tránh các chuỗi yêu cầu

Trang 5

 Thay vì sử dụng mã (404 Not Found) khi yêu cầu địa chỉ cho một phần đườngdẫn thì luôn luôn cung cấp một trang mặc định hoặc tài nguyên như một phản hồi.

Nguyên tắc 4: Chuyển đổi JavaScript Object Notation (JSON) và XML hoặc cả hai.

 Là một bản tóm tắt các thuộc tính của những thứ trong mô hình dữ liệu hệ thống

 Định dạng dữ liệu mà ứng dụng và trao đổi dịch vụ trong mức đáp ứng yêu cầu/ phản hồi hoặc trong phần thân của HTTP

 Các chủ thể trong mô hình dữ liệu có liên quan với nhau

 Cấu trúc dịch vụ sao cho nó tận dụng được phần đầu chấp nhận HTTP có sẵn bên trong – một loại MIME

4.Xây dựng Web Service

Tui liệt kê các bước tương đối (chi tiết sẽ trình bày trong bài kế tiếp):

Bước 3: Tạo ra các Web API

Nhấp chuột phải vào thư mục Controllers và chọn thêm controller

Web API 2 Controller Empty: tự viết các phương thức từ đầu.

Trang 6

Web API 2 Controller with read/write actions: phát sinh các phương thức

ví dụ để bạn có thể biết cách viết các service này

Bước 4: Chạy thử và kiểm tra.

Bài kế tiếp Tui sẽ trình bày chi tiết cách tạo Web API service, cách cấu hình cũng như sử dụng Service

Trang 7

Bài 2: Xây dựng Web Service dùng API RESTful Service

Trong bài này Tui sẽ hướng dẫn chi tiết cách tạo Web API (lý thuyết ở đây), cách

cấu hình IIS, cách sử dụng công cụ Postman(với những ai dùng chrome), cách sử dụng HttpRequester (với những ai dùng Firefox) Postman và HttpRequester là

một trong những công cụ hiệu quả nhất để TEST coding của ta, nếu code của ta passqua được công cụ này thì có thể kết luận rằng Webservice của ta chắc chắn hoạt động tốt

Để cho có cảm giác Tui sẽ tạo một cơ sở dữ liệu SQL Server, WebAPI sẽ tương tác

dữ liệu này bằng cách sử dụng LinQ to SQL:

Bước 1: Tạo cơ sở dữ liệu tên “dbFood”, có một bảng “Food” gồm 4 cột (id để auto)

như dưới đây:

Các bạn có thể tải SQL Script ở đây để tạo CSDL cho

Bước 2: Tiến hành viết Web API

Để tạo Project sử dụng Web API có nhiều cách tạo, ở đây Tui sử dụng cách đơn giảnnhất để các bạn bớt rối

Từ Visual Studio 2013 vào menu File/chọn new/ chọn Project:

Trang 8

Sau khi chọn Project, màn hình sau xuất hiện:

Chọn các cấu hình như trên, đặt tên Project là “FoodServer” rồi nhấn OK.

Project mặc định ban đầu như sau:

Giờ ta tiến hành tạo LinQ to SQL cho CSDL dbFood để dễ xử lý như sau:

Bấm chuột phải vào Project/ chọn :

Trang 9

Màn hình tạo tên LINQ to SQL hiển thị lên, ta tạo tên rồi nhấn OK:

(chú ý đôi khi bạn sẽ không thấy LINQ to SQL Classes ở màn hình này), nếu không thấy thì chọn New Item:

Ta chọn các mục giống như bên dưới, tìm tới LINQ to SQL Classes rồi đặt tên DBFood tương tự như trên:

Trang 10

Cả 2 cách cuối cùng cũng trạo được DBFood LINQ như sau:

– Ta tiến hành cấu hình để kéo Cơ sở dữ liệu vào làm các lớp tương tác:

Bạ mở Server Explorer (vào menu View/Server Explorer), bấm chọn theo các bước như bên dưới (lệ thuộc vào Server của bạn mà chọn Server name, User đăng nhập cho phù hợp):

Trang 11

Khi khi bấm OK, bạn sẽ thấy Server Explorer có thêm mục sau:

Bạn kéo thả bảng Food vào mục bên phải như hình trên

Trang 12

Tiếp theo bạn tạo 1 thư mục (tên gì cũng được), ở đây Tui đặt đại tên Controllers (bấm chuột phải vào Project/chọn Add/chọn New Folder):

Sau khi thư mục Controllers được tạo ra, bạn bấm chuột phải vào Thư Mục này rồi

chọn Add/Controller :

Sau khi bạn chọn Controller… màn hình sau xuất hiện:

Trang 13

Ta chọn Web API 2 Controller – Empty rồi bấm Add, Visual sẽ hiển thị màn hình

đặt tên cho Controller:

Mặ

c định là chữ Default, bây giờ bạn đổi lại thành Food (thường ta làm API cho bảng nào thì lấy tên bảng đó), đó là lý do vì sao Tui đặt là Food:

Tậ

p tin FoodController.cs sẽ được tạo ra, nhưng ta chỉ lấy Food(bỏ chữ Controller

đằng sau đi) để tương tác (đây là cơ chế hoạt động) Ta xem cấu trúc Controller đượctạo ra:

Trang 14

Cấu trúc có gì?

File WebApiConfig.cs được sinh ra trong thư mục App_Start, bạn để ý

routeTemplate: “api/{controller}/{id}”, tức là khi ta dùng thì viết: “api/food” để lấytoàn bộ danh sách, hay “api/food/3” để lấy chi tiết 1 Food có mã là 3

File FoodController.cs kế thừa từ ApiController

Bây giờ ta tiến hành viết các chức năng (viết trong file FoodController.cs) :

HttpGet: Truy vấn thông tin

HttpPost: Thêm mới thông tin

HttpPut: Thay đổi thông tin

HttpDelete: Xóa thông tin

Trước tiên ta làm HttpGet:

Trang 15

DBFoodDataContext db = new DBFoodDataContext();

return db.Foods.FirstOrDefault(x => x.id == id);

}

}

}

Chú ý là Web API nó không quan tâm tới tên phương thức (viết tên gì cũng được, nó

tự động lấy chính xác Service yêu cầu), (không cho phép trùng tên biến) Ví dụ nếu bạn cố tình tạo thêm 1 hàm:

DBFoodDataContext db = new DBFoodDataContext();

return db.Foods.FirstOrDefault(x => x.id == id);

}

Khi chạy sẽ báo lỗi ngày (vì hệ thống không quan tâm tên hàm), nó thấy 2

biến id giống nhau ở trên 2 hàm nó sẽ không biết dùng cái nào (vì chúng cùng nhóm HttpGet) Cụ thể là lỗi sau:

Trang 16

“Multiple actions were found that match the request:

GetFood on type FoodServer.Controllers.FoodController

GetFood_test on type FoodServer.Controllers.FoodController”

Tiếp theo ta viết HttpPost (thêm mới):

/// <param name="price">đơn giá</param>

/// <returns>true thành công, false thất bại</returns>

DBFoodDataContext db = new DBFoodDataContext();

Food food = new Food();

/// <param name="id">mã food muốn sửa</param>

/// <param name="name">tên mới</param>

/// <param name="type">loại mới</param>

/// <param name="price">giá mới</param>

Trang 17

DBFoodDataContext db = new DBFoodDataContext();

//lấy food tồn tại ra

Food food = db.Foods.FirstOrDefault(x=>x.id==id);

if (food == null) return false;//không tồn tại false

DBFoodDataContext db = new DBFoodDataContext();

//lấy food tồn tại ra

Food food = db.Foods.FirstOrDefault(x => x.id == id);

if (food == null) return false;

Trang 18

DBFoodDataContext db = new DBFoodDataContext();

return db.Foods.FirstOrDefault(x => x.id == id);

/// <param name="price">đơn giá</param>

/// <returns>true thành công, false thất bại</returns>

DBFoodDataContext db = new DBFoodDataContext();

Food food = new Food();

Trang 19

/// <param name="id">mã food muốn sửa</param>

/// <param name="name">tên mới</param>

/// <param name="type">loại mới</param>

/// <param name="price">giá mới</param>

DBFoodDataContext db = new DBFoodDataContext();

//lấy food tồn tại ra

Food food = db.Foods.FirstOrDefault(x=>x.id==id);

if (food == null) return false;//không tồn tại false

DBFoodDataContext db = new DBFoodDataContext();

//lấy food tồn tại ra

Food food = db.Foods.FirstOrDefault(x => x.id == id);

if (food == null) return false;

db.Foods.DeleteOnSubmit(food);

db.SubmitChanges();

return true;

}

Trang 21

Bạn cấu hình như trên, Port tui chỉnh là 8888, bạn chọn Port nào cũng được, nhưng thường là 4 chữ số.

Sau đó bấm Create Virtual Directory:

Nếu Visual thông báo màn hình trên coi như bạn thành công

Bây giờ ta thử chức năng HttpGet để lấy toàn bộ Food và lấy 1 Food theo id bất kỳ:F5 để chạy Project:

Trang 22

Bạn chỉnh lại: http://localhost:8888/api/food để lấy toàn bộ Food:

Trang 23

Để lấy 1 Food có mã bất kỳ:

Ví dụ: Lấy Food có mã id=15: http://localhost:8888/api/food/15

Trang 24

Hoặc: http://localhost:8888/api/food?id=15

Ta cần phải biết các

công cụ để test HttpGet,HttpPost,HttpPut và HttpDelete.

Bài kế tiếp Tui sẽ hướng dẫn cách dùng công cụ Postman và HttpRequester để xử lý

Trang 25

Bài 3: Xây dựng Web Service dùng API REST ful Service

Trong bài này Tui hướng dẫn các bạn cách sử dụng 2 công

cụ HttpRequester (firefox addon) và Postman (chrome addon) Các bạn cần nắm

Trang 26

Mục URL: Nhập URL Web API của bạn vào (http://localhost:8888/api/food) Bạn nhấn GET, chương trình sẽ lấy toàn bộ danh sách Food vào màn hình bên phải (bạn quan sát sẽ thấy).

Để Test lấy 1 Food theo mã nào đó bạn làm như sau:

Trang 27

Bạn vào tab Parameters, nhập tên biến + giá trị rồi nhấn Add Sau đó bấm nút GET

để lấy dữ liệu, như bạn quan sát đó Tui nhập id=15 thì chương trình lấy ra được Food “Hột mít vùi tro”

-Test HTTP POST:

Đối với POST bạn cũng vào Parameters, nhập đủ parameters (phải giống như viết trong Web API), sau đó nhấn nút “POST”, bạn thấy kết quả trả về là true—> tức là thêm thành công Bạn có thể test lại chức năng HTTP GET để xem lại kết quả thêm mới này

Trang 28

Giờ Tui làm tiếp trường hợp Delete:

Trong combobox, bạn chọn DELETE, nhập Parameter rồi bấm Submit, thấy kết quả

là true==> xóa thành công

Trang 29

Kích hoạt postman để sử dụng.

Để lấy toàn bộ dữ liệu (HttpGet) ta chọn Get như hình dưới đây:

Để lấy 1 Food theo mã ta làm theo các bước dưới đây (Ví dụ lấy Food có id=1):

Trang 30

Để sử dụng HttpPost (tạo Food mới) ta làm theo các bước dưới đây:

Ở trên khi bấm Send, trả về true==> thêm Food thành công

Để xóa một Food có mã bất kỳ:

Trang 31

Trên đây là cách sử dụng HttpRequester và Postman, 2 công cụ này rất hiệu quả

giúp chúng ta kiểm tra quá trình thực hiện HttpPost,HttpGet,HttpPut,HttpDelete trước khi triển khai vào hệ thống thực

Trang 32

Bài 4: Xây dựng Web Service dùng API REST ful Service

Trong bài bài 68 và bài 69 và bài 70 các bạn đã hiểu được RESTful cũng như cách thức hoạt động của HttpPost, HttpGet, HttpPut và HttpDelete Tuy nhiên để tương tác được với nó thì cần cấu hình lên Webserver, cụ thể là IIS, trước đây Tui có

hướng dẫn các bạn cách tạo lên somee.com, các bạn có thể xem lại bài hướng dẫn này ở đây

Trong bài này Tui sẽ hướng dẫn các bạn từng bước cài đặt lên IIS Server ở máy localcủa các bạn, việc test trên máy local cũng khá quan trọng vì khi test hoàn chỉnh xongthì ta mới publish ra ngoài

Dưới đây là chi tiết từng bước cách dựng IIS Server và cách triển khai FoodServer lên IIS này (Tui setup trên Win 10, 64 bit)

Bước 1: Vào Control panel chọn Programs and Features

Bước 2: Chọn Turn Windows features on or off:

Trang 33

Bước 3:

Tiến hành lựa chọn để cài IIS Web Server theo màn hình dưới đây:

Trang 34

Sau khi lựa chọn giống như khung khoanh màu đỏ, nhấn OK để tiến hành cài đặt, tùy thuộc vào máy

mà chương trình có thể cài từ 5-10 phút

Bước 4: Sử dụng IIS Web Server:

Sau khi cài xong IIS Web Server, bạn quay lại màn hình Control panel, bạn sẽ thấy Administrative Tools:

Trang 35

Bạn click vào biểu tượng Administrative Tools, ta có giao diện tiếp theo:

B

ạn chọn “Internet Information Services (IIS) Manager” như hình trên:

Trang 36

Trong màn hình quản trị bạn thấy có 2 vùng: Application Pools và Default Web site.

Bước 4.1 Cấu hình Application Pools:

Application Pool là gì?

Application Pool có thể chứa một hoặc nhiều ứng dụng và cho phép chúng ta cấu hình cấp độ giữa các ứng dụng web khác nhau Ví dụ, nếu bạn muốn cô lập tất cả các ứng dụng web chạy trong cùng một máy, bạn có thể làm điều này bằng cách tạo

ra Application Pool riêng biệt cho mỗi ứng dụng web và đặt chúng trong ApplicationPool tương ứng Bởi vì mỗi Application Pool chạy trong quá trình làm việc riêng củamình, các lỗi trong Application Pool sẽ không ảnh hưởng đến các ứng dụng đang chạy trong Application Pool khác Triển khai ứng dụng trong Application Pool là lợi thế chính của IIS trong quá trình làm việc ở chế độ cách ly bởi vì bạn có thể tùy chỉnh Application Pool để đạt được cấp độ tách biệt ứng dụng mà bạn cần

Khi bạn cấu hình Application Pool để sẵn sàng tối ưu, bạn cũng nên xem xét làm thếnào để cấu hình Application Pool bảo mật ứng dụng Ví dụ, bạn có thể cần phải tạo

ra Application Pool riêng cho ứng dụng đòi hỏi mức độ bảo mật cao, trong khi cho phép các ứng dụng đòi hỏi một mức độ thấp hơn của bảo mật để chia sẻ cùng

Application Pool

Bạn bấm chuột phải vào màn hình Application Pools/ chọn Add Application Pool… như hình dưới đây:

Trang 37

Màn hình tạo mới Application Pool hiển thị lên, ta nhập “FoodServer_Pool” rồi

bấm OK:

Sau khi bấm OK, bạn quan sát:

Ngày đăng: 09/08/2017, 07:51

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w