WebAPI的初步認識(CURD)

来源:http://www.cnblogs.com/dalovess/archive/2016/06/17/5592716.html
-Advertisement-
Play Games

1.創建一個MVC項目,選擇API 2.在Models層里添加Product類,IProductRepository介面,ProductRepository類 public class Product { public int ID { get; set; } public string Name ...


1.創建一個MVC項目,選擇API

2.在Models層里添加Product類,IProductRepository介面,ProductRepository類

public class Product
{
public int ID { get; set; }
public string Name { get; set; }
public string Category { get; set; }
public decimal Price { get; set; }
}

public interface IProductRepository
{
IEnumerable<Product> GetAll();
Product Get(int id);
Product Add(Product item);
void Remove(int id);
bool Update(Product item);

}

public class ProductRepository:IProductRepository
{
private List<Product> products = new List<Product>();
private int _nextId = 1;

public ProductRepository()
{
Add(new Product { Name = "Tomato soup", Category = "Groceries", Price = 1.39M });
Add(new Product { Name = "Yo-yo", Category = "Toys", Price = 3.75M });
Add(new Product { Name = "Hammer", Category = "Hardware", Price = 16.99M });
}
public IEnumerable<Product> GetAll()
{
return products;
}

public Product Get(int id)
{
return products.Find(p => p.ID == id);
}

public Product Add(Product item)
{
if (item == null)
{
throw new ArgumentNullException("item");
}
item.ID = _nextId++;
products.Add(item);
return item;
}

public void Remove(int id)
{
products.RemoveAll(p => p.ID == id);
}

public bool Update(Product item)
{
if (item == null)
{
throw new ArgumentNullException("item");
}
int index = products.FindIndex(p => p.ID == item.ID);
if (index == -1)
{
return false;
}
products.RemoveAt(index);
products.Add(item);
return true;

}
}

3.get,post,put,delete類型

get 類型 用於從伺服器端獲取數據,且不應該對伺服器端有任何操作和影響

post 類型 用於發送數據到伺服器端,創建一條新的數據,對伺服器端產生影響

put 類型 用於向伺服器端更新一條數據,對伺服器端產生影響 (也可創建一條新的數據但不推薦這樣用)

delete 類型 用於刪除一條數據,對伺服器端產生影響

4.前端操作

---載入數據GET

function load() {

// Send an AJAX request
$.getJSON("/api/products/",
function (data) {
// On success, 'data' contains a list of products.
$.each(data, function (key, val) {
// Format the text to display.
var str = val.Name + ': $' + val.Price;
// Add a list item for the product.
$('<li/>', { text: str })
.appendTo($('#products'));
});
});
}

-----根據Id查找GET

function find() {
var id = $('#prodId').val();
$.getJSON("/api/products/" + id,
function (data) {
var str = data.Name + ': $' + data.Price;
$('#product').text(str);
})
.fail(
function (jqXHR, textStatus, err) {
$('#product').text('Error: ' + err);
});
}

----添加數據POST

function add() {
//用於保存用戶輸入的數據

//添加一條記錄,請求類型:post 請求url: /api/Products
//請求到ProductsController.cs中的 public HttpResponseMessage PostProduct(Product item) 方法
$("#addItem").click(function () {
var newProduct = Product.create();
newProduct.Name = $("#name").val();
newProduct.Category = $("#category").val();
newProduct.Price = $("#price").val();
$.ajax({
url: "/api/Products",
type: "POST",
contentType: "application/json; charset=utf-8",
data: JSON.stringify(newProduct),
success: function () {
alert("添加成功");
$("#products").children("li").remove();//清除之前的子元素
load();//刷新
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert("請求失敗,消息:" + textStatus + " " + errorThrown);
}
});
});
}

---也是根據ID查詢數據

function show() {
$("#showItem").click(function () {
var inputId = $("#id2").val();
$("#name2").val("");
$("#category2").val("");
$("#price2").val("");
$.ajax({
url: "/api/Products/" + inputId,
type: "GET",
contentType: "application/json; charset=urf-8",
success: function (data) {
$("#name2").val(data.Name);
$("#category2").val(data.Category);
$("#price2").val(data.Price);
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert("請求失敗,消息:" + textStatus + " " + errorThrown);
}
});
});
}

------更新操作 PUT
function edit() {
$("#editItem").click(function () {
var inputId = $("#id2").val();
var newProduct = Product.create();
newProduct.Name = $("#name2").val();
newProduct.Category = $("#category2").val();
newProduct.Price = $("#price2").val();
$.ajax({
url: "/api/Products/" + inputId,
type: "PUT",
data: JSON.stringify(newProduct),
contentType: "application/json;charset=urf-8",
success: function () {
alert("修改成功");
$("#products").children("li").remove();//清除之前的子元素
load();//刷新
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert("請求失敗,消息:" + textStatus + " " + errorThrown);
}
})
});
}

-----刪除操作 DELETE
function del() {
$("#removeItem").click(function () {
var inputId = $("#id2").val();
$.ajax({
url: "/api/Products/" + inputId,
type: "DELETE",
contentType: "application/json; charset=uft-8",
success: function (data) {
alert("Id為 " + inputId + " 的記錄刪除成功!");
$("#products").children("li").remove();//清除之前的子元素
load();//刷新
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert("請求失敗,消息:" + textStatus + " " + errorThrown);
}
});
});
}

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一.多行註釋的添加 1. vim的命令模式下(ESC 進入命令模式): 2. 按CTRL+V進入可視化模式(VISUAL BLOCK); 註意:vim命令模式下v進入的是visual模式,ctrl+v進入的是visual block,簡單的選擇視覺區別如下圖: 3. 移動游標,選中需要註釋的多行 的 ...
  • Linux中有一個強大的調試工具GDB(GNU Debugger),可以調試C和C++程式。 GDB的主要功能如下: 使用GDB的前提是,在編譯程式的時候需要加入-g選項,即 gcc -g xxx.c。當設置這個選項的時候,GCC會向程式中加入“楔子”,GDB能夠利用這些楔子與程式交互。 書上的測試 ...
  • 在文章中,我們將展示在centOS系統下如何將php升級到5.6,之前通過yum來安裝lamp環境,直接升級的話,提示沒有更新包,也就是說預設情況下php5.3.3是最新 1.查看已經安裝的php版本號 鍵入下麵代碼: 出現下麵代碼: 好,我們繼續。 2.安裝Remi跟EPEL RPM源 如果你還沒 ...
  • 語法:find [路徑] [參數] [action] -name filename,查找名為filename的文件 -iname filename,查找名為filename的文件,但是不區分大小寫 -user username,查找屬主為username的文件 -group groupname,查找 ...
  • 1、啟動 2、停止 快速停止 kill -TERM 主進程號 強制停止 kill -9 nginx 3、重啟 如果更改了配置就要重啟Nginx,要先關閉Nginx再打開?可以向Nginx 發送信號,平滑重啟。 平滑重啟命令: kill -HUP 主進程號或進程號文件路徑 或者使用 /usr/ngin ...
  • 用.NET下托管語言C#操作註冊表,主要內容包括:註冊表項的創建,打開與刪除、鍵值的創建(設置值、修改),讀取和 刪除、判斷註冊表項是否存在、判斷鍵值是否存在。 準備工作: 1:要操作註冊表,我們必須要引入必要的命名空間: using Microsoft.Win32; 在這個命名空間裡面包含了許多註 ...
  • 當我們安裝微軟的軟體,多數軟體是需要輸入license key。它有五個文本框,輸入完第一個文本框之後,游標自動跳至下一個文本框。Insus.NET今天也使用asp.net來模仿一個。呵呵。 這個演示,在輸入時,是不需要與服務端交互,只有全部輸入完畢之後,用戶點銨鈕才進行驗證。因此在這裡,寫Java ...
  • 本文內容 提高 Web 站點性能的最佳實踐 修改記錄 下麵是使頁面更快的35個最佳實踐,它們被劃分為7個類別。 類別: content、server、cookie、css、javascript、images、mobile (Yahoo 開發的瀏覽器插件 YSLOW,利用這七個類作為評價頁面的指標) ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...