Như bạn thấy phương thức Get chứa tham số id kiểu int. Vì vậy , Web API sẽ thử đính kèm giá trị id của câu truy vấn URL , sau đó chuyển đổi nó thành kiểu int và gán nó vào tham số id của phương thức Get . Ví dụ, nếu một request HTTP là http://localhost/api/student?id=1 thì giá trị của tham số id sẽ là 1.
Sau đây là những request HTTP GET hợp lệ cho phương thức trên
http://localhost/api/student?id=1
http://localhost/api/student?ID=1
Ghi chú:Tên tham số câu truy vấn và têm tham số của phương thức phải giống nhau . Nếu tên không giống nhau thì giá trị của tham số câu truy vấn sẽ không được gán. Thứ tự của tham số có thể khác nhau.
Multiple Primitive Parameters:
Xem xét ví dụ sau về phương thức Get với nhiều tham số có kiểu dữ liệu nguyên thủy.
Như bạn có thể thấy ở trên , phương thức Get chứa những tham số có kiểu dữ liệu nguyên thủy. Vì vậy, Web API sẽ thử đính kèm những giá trị từ câu truy vấn URL . Ví dụ , nếu một request HTTP là http://localhost/api/student?id=1&name=steve thì giá trị của tham số id sẽ là 1 và name sẽ là "steve".
Sau đây là những reuqest HTTP GET hợp lệ cho phương thức trên.
http://localhost/api/student?id=1&name=steve
http://localhost/api/student?ID=1&NAME=steve
http://localhost/api/student?name=steve&id=1
Note:Tên tham số câu truy vấn phải giống với tên của tham số trong phương thức . Tuy nhiên , chúng có thể khác vị trí.
POST Action Method with Primitive Parameter:
HTTP POST request dùng để tạo mới tài nguyên. Nó cũng có thể bao gồm dữ liệu trong body của Request hoặc cũng có thể trong chuỗi truy vấn.
Như bạn có thể thấy ví dụ trên , phương thức Post() bao gồm những tham số có kiểu dữ liệu nguyên thủy như là id và name. Vì vậy, theo mặc định , Web API sẽ lấy giá trị từ câu truy vấn string. Ví dụ, nếu một request HTTP POST là
https://localhost/api/student?id=1&name=steve thì giá trị của id sẽ là 1 và name sẽ là "steve" ở phương thức Post() trên.
Bay giờ , hãy xem xét phương thức Post() sau với tham số kiểu phức tạp.
Phương thức Post() ở ví dụ trên chứa tham số kiểu dữ liệu Student . Vì vậy , theo nguyên tắc mặc định , Web API sẽ thử lấy dữ liệu của tham số stud từ body của request HTTP.
Sau đây là request POST HTTP hợp lệ trong fiddler cho phương thức trên
Parameter Binding
Web API trích đối tượng JSON từ body của request trên và chuyển đổi nó thành đối tượng Student một cách tự động bới vì tên của các trường đới tượng JSON khớp với tên của các trưởng trong đối tượng Student.
POST Method with Mixed Parameters:
Phương thức Post có thể chứa những tham số kiểu nguyên thủy và kiểu phức tạp . Xem xép ví dụ sau.
Example: Post Method with Primitive and Complex Type Parameters
Phương thức Post chứa cả tham số kiểu thức tạp và kiểu nguyên thủy . Vì vậy ,mặc định,Web API sẽ lấy tham số id từ câu truy vấn và tham số student từ body của request.
Following is a valid HTTP POST request in the fiddler for the above action method.
Parameter Binding
Note:Phương thức Post không thể chứa nhiều tham số kiểu phức tạp bởi ví có ít nhất một tham số được cho phép đọc từ body của request.
Ràng buộc tham số cho phương thức Put và Patch sẽ tương tự như phương thức Post trong Web.
[FromUri] and [FromBody]:
You have seen that by default Web API gets the value of a primitive parameter from the query string and complex type parameter from the request body. But, what if we want to change this default behaviour?
Bạn đã thấy rằng mặc định Web API lấy giá trị của tham số nguyên thủy từ câu truy vấn string và kiểu phức tạp từ body của request . Nhưng , nếu chúng ta muốn thay đổi hành vi mặc định này thì sao?
Sử dụng [FromUri] attribute để bắc buộc WebAPI lấy dữ liệu kiểu phức tạp từ câu truy vấn và [FromBody] attribute để lấy dữ liệu nguyên thủy từ body của request , đối ngược với nguyên tắc mặc định.
Trong ví dụ trên , phương thức Get chứa tham số kiểu dữ liệu phức tạp với thuộc tính [FromUri] . Vì vậy , Web API sẽ thử lấy giá trị của tham số kiểu Student từ câu truy vấn. Ví dụ , nếu một HTTP Get http://localhost:xxx/api/student?id=1&name=steve thì WebAPI sẽ tạo ra một đối tượng Student và gán giá trị prop id và name từ giá trị của id và name của câu truy vấn
Note:Name of the complex type properties and query string parameters must match.
The same way, consider the following example of Post method.
As you can see above, we have applied [FromUri] attribute with the Student parameter. Web API by default extracts the value of complex type from request body but here we have applied [FromUri] attribute. So now, Web API will extract the value of Student properties from the query string instead of request body.
The same way, apply [FromBody] attribute to get the value of primitive data type from the request body instead of query string, as shown below.
Following is a valid HTTP POST request in the fiddler for the above action method.
Parameter Binding
Note:FromBody attribute can be applied on only one primitive parameter of an action method. It cannot be applied on multiple primitive parameters of the same action method.
The following figure summarizes parameter binding rules.
Web API Routing: Ở bài phần trước , chúng ta đã hoc về Web API có thể được cấu hình trong lớp WebApiConfig.Bay giờ chúng ta sẽ tìm hiểu về cách để cấu hình Web API routes. Web API routing tương tự như ASP.NET MVC Routing. Nó dùng định tuyến các yêu cầu HTTP gửi đến cho(từ đó gọi những phương thức cụ thể trong Controller để xử lý) phương thức cụ thể trên Web API Controller. Web API hỗ trợ hai loại routing sau: Convention-based Routing Attribute Routing Convention-based Routing: Trong Convention-baed Routing , Web API sử dụng mẫu route để xác định xem controller và phương thức nào sẽ được gọi và thực thi. Có ít nhất một mẫu route được thêm vào table để xử lý những yêu cầu HTTP khác nhau. Khi chúng ta tạo dự án Web API bằng cách sử dụng mẫu dự án WebAPI mà visual đã tạo sẵn . Trong thư mục App_Start , class WebApiConfig tự thêm vào route mặc định như hiển thị bên dưới. Ví dụ : WebApiConfig với Route mặc định public static class WebApiConfig { public static ...
Action Method Return Type: Action Method Return Type: Ở trong phần trước , bạn đã tìm hiểu về ràng buộc tham só với phương thức Web API. Bài này , bạn sẽ tìm hiểu về kiểu dữ liệu trả về của nhưng phương thức mà lần lượt được nhúng vào trong response Web API gửi đến phía Client. Phương thức Web API có thể có những kiểu dữ liệu trả về sau Void Primitive type or Complex type HttpResponseMessage IHttpActionResult Void: Không nhất phải những phương thức này phải trả về một cái gì đó. Nó nó thể có kiểu trả về là void Ví dụ ,xem xét phương thức Delete sau mà chỉ xóa Student từ nguồn dữ liệu và không trả về gì cả. Example: Void Return Type public class StudentController : ApiController { public void Delete( int id) { DeleteStudentFromDB(id); } } Như bạn thấy ở trên phương thức Delete trả về void. Nó sẽ gửi trạng thái code 204 "No content" như là một lời phản hồi khi bạn gửi request HTTP Delete. Void Response Status Primit...
Nhận xét
Đăng nhận xét