❶ 請問html的js調用webapi介面
引用jquery,有很方便的GET調用方法:
<!DOCTYPEhtml>
<html>
<head>
<metahttp-equiv="content-type"content="text/html;charset=UTF-8">
<metaname="viewport"content="width=device-width,initial-scale=1">
<!--src值為文件位置路徑-->
<scripttype="text/javascript"charset="UTF-8"src="javascript/jquery-1.12.1.js"></script>
<title>測試案例</title>
<!--語法:jQuery.getJSON(url,data,success(data,status,xhr))-->
<scripttype="text/javascript"charset="UTF-8">
functiongetToken(){
$.getJSON("http://localhost/kdapi/api/access_token",{"id":111,"secret":2352532},function(result){
alert(result.access_token);
});
}
</script>
</head>
<body>
<buttononclick="getToken()"style="width:120px;height:60px;">獲取Token</button>
</body>
</html>
❷ RESTful架構中的webapi
通過webAPI在server端開發一個借口,在client端調用此借口的完整過程。
(VS2010版本如果包括MVC4也可以創建webAPI,或者vs2012及以上版本)
運行環境:VS2017
開發語言:c#
一、server端
1.創建webapi項目,打開vs2017-文件-新建-項目。
2.在項目中添加Controllers和Models兩個文件夾,分別用於存放控制器類和實體類。
在Controllers文件夾中添加API控制器類。
控制類添加完成後,會自動生成,GET,POST,PUT,DELETE四個方法。
通過地址確定方法:
get方式:http://IP地址:埠號/api/控制器名稱
post方式:[HttpGet("方法標識名稱")] http://IP地址:埠號/api/控制器名稱/方法標識名稱
添加一個方法,在方法中描述介面需要完成的操作以及返回值。
需要注意事項:
1)傳進來參數的數據類型必須與接收的數據類型相同。
二、client端
1.添加控制台應用程序用來測試調用介面是否成功。
2.定義一個方法用來調用介面並返回數據。
3.定義一個restful介面幫助類。
❸ 有哪些webapi開發好用的工具
先定義一個簡單的webapi,簡單到差不多直接用vs2010自動生成的webapi代碼。其中的TestModle是一個簡單的class,如下public class TestModle { public string a { get; set; } public string b { get; set; } public string c { get; set; } }
❹ 如何測試webservice和websocket介面
WebSocket是html5新增加的一種通信協議,目前流行的瀏覽器都支持這個協議,例如Chrome,Safari,Firefox,Opera,IE等等,對該協議支持最早的應該是chrome,從chrome12就已經開始支持,隨著協議草案的不斷變化,各個瀏覽器對協議的實現也在不停的更新。該協議還是草案,沒有成為標准,不過成為標准應該只是時間問題了,從WebSocket草案的提出到現在已經有十幾個版本了,目前最新的是版本17,所對應的協議版本號為13,目前對該協議支持最完善的瀏覽器應該是chrome,畢竟WebSocket協議草案也是Google發布的。
1. WebSocket API簡介
首先看一段簡單的javascript代碼,該代碼調用了WebSockets的API。
[javascript] view plain
var ws = new WebSocket(「ws://echo.websocket.org」);
ws.onopen = function(){ws.send(「Test!」); };
ws.onmessage = function(evt){console.log(evt.data);ws.close();};
ws.onclose = function(evt){console.log(「WebSocketClosed!」);};
ws.onerror = function(evt){console.log(「WebSocketError!」);};
這份代碼總共只有5行,現在簡單概述一下這5行代碼的意義。
第一行代碼是在申請一個WebSocket對象,參數是需要連接的伺服器端的地址,同http協議使用http://開頭一樣,WebSocket協議的URL使用ws://開頭,另外安全的WebSocket協議使用wss://開頭。
❺ 如何使用mvc實現webapi的增刪改查
1.創建項目:visual C# —> ASP.NET MVC 4 web應用程序 模板—>web api;
2.注冊路由:
路由表中的每一個條目都包含一個路由模板。這個Web API默認的路由模版是"api/{controller}/{id}"。在這個模版中,「api」是一個文字式路徑片段,而{controller}和{id}則是佔位符變數。
當Web API框架接收一個HTTP請求時,它會試圖根據路由表中的一個路由模板來匹配其URI。如果無路由匹配,客戶端會接收到一個404(未找到)錯誤。
3.linq to sql連接資料庫
1.建立資料庫建表
2.在models文件夾裡面新建linq to sql類文件
3.工具->連接到資料庫
4.將要用的表拖入設計區
5.獲取資料庫Getway。"linq to sql class"文件名+Datacontext實例化這個對象,數據表就會映射到一個集合屬性中,personDataDataContext db = new personDataDataContext();
6.增刪改查
增:
public Boolean Post([FromBody]UserInfo userInfo) {
personDataDataContext db = new personDataDataContext();
var s1 = new test2
{
UserName =userInfo.UserName, Id=userInfo.Id, Age=userInfo.Age
};
if (db.test2.SingleOrDefault<test2>(s => s.Id == userInfo.Id) == null)
{
db.test2.InsertOnSubmit(s1);
db.SubmitChanges();
return true;
} else {
return false;
}
}
刪:
public bool Delete(int id)
{
personDataDataContext db = new personDataDataContext();
var deleteperson = db.test2.SingleOrDefault<test2>(s => s.Id == id);
if (deleteperson == null)
{
return false;
} else {
db.test2.DeleteOnSubmit(deleteperson);
db.SubmitChanges();
return true;
}
}
改:
public Boolean Put(int id, [FromBody]UserInfo userInfo)
{
personDataDataContext db = new personDataDataContext();
var editperson = db.test2.SingleOrDefault<test2>(s => s.Id == userInfo.Id);
if (editperson == null)
{
return false;
} else {
editperson.Age = userInfo.Age;
editperson.UserName = userInfo.UserName;
db.SubmitChanges();
return true;
}
查:
public IEnumerable<test2> Get()
{
personDataDataContext db = new personDataDataContext();
var query = from s in db.test2
orderby s.UserName
select s;
return query;
}
// GET api/values/5
public string Get(int id)
{
return "value";
}
這里我新建了一個userinfo類
public class UserInfo { public string UserName { get; set; } public int Id { get; set; } public int Age { get; set; } }
用來接收前端頁面ajax請求中的data數據,s => s.Id == userInfo.Id是lamda表達式創建委託方法意思是在db.test2的person集合中查找某個person的Id與userinfo接收到的id相等的person對象
❻ 怎麼把WebApi介面部署到IIS
用flashfxp 工具上傳到伺服器 前提是你需要有伺服器上有操作空間許可權的用戶名和密碼如果是ASP的 或者.NET的 傳完用IIS配置網站文件夾安全也需要增加一個對應文件夾的用戶 或者everyone用戶 來給它寫許可權還要記得IIS配置里開啟父路徑。
❼ WebAPI系列之快速入門
前言
隨著上位機開發技術的廣泛應用,很多小夥伴會有上位機與MES等系統進行數據交互的需求,這時候,我們就需要了解WebAPI的相關技術。
什麼是WebAPI?
WebAPI是一個簡單的構建HTTP服務的新框架,用於對接各種客戶端(瀏覽器,移動設備),在.Net平台上,WebAPI是一個開源的、理想的、構建REST-ful服務的技術。
WebAPI部署在哪裡?
WebAPI部署在IIS中,用於給外部應用提供數據。
為什麼要使用WebAPI?
WebAPI本質是網路應用程序介面,網路應用可以通過API介面,可以實現存儲服務、消息服務、計算服務等能力,利用這些能力可以進行開發出強大功能的web應用。
創建WebAPI
1、打開VS2019,創建一個新項目,項目模板選擇ASP.NET Web應用程序(.NET Framework),如下所示:
2、創建完成後,取一個項目名稱,然後點擊下一步,在下面的頁面中,選擇模板為Web API,如下所示:
3、創建項目需要一點時間,由於我們選擇好了Web API,所以創建好的項目界面自動會添加好Models/Controllers/Views等文件夾,如下所示:
4、在Models文件夾下,創建一個實體類,如下所示:
5、在Controllers文件夾下,右擊創建控制器,這里注意要選擇Web API 2控制器模板,名稱為THMonitorController,繼承ApiController,如下所示:
6、在THMonitorController控制器中,創建一個實體集合對象,同時添加兩個Get開頭的方法,如下所示:
public class THMonitorController : ApiController
{
THMonitor[] THMonitors = new THMonitor[]
{
newTHMonitor(){Name="溫度1",Value="22.3",Unit="℃",Desc="溫度1"},
newTHMonitor(){Name="溫度2",Value="22.1",Unit="℃",Desc="溫度2"},
newTHMonitor(){Name="溫度3",Value="32.3",Unit="℃",Desc="溫度3"},
newTHMonitor(){Name="溫度4",Value="22.3",Unit="℃",Desc="溫度4"},
newTHMonitor(){Name="濕度1",Value="42.3",Unit="%",Desc="濕度1"},
newTHMonitor(){Name="濕度2",Value="42.1",Unit="%",Desc="濕度2"},
newTHMonitor(){Name="濕度3",Value="42.3",Unit="%",Desc="濕度3"},
newTHMonitor(){Name="濕度4",Value="42.3",Unit="%",Desc="濕度4"},
};
public IEnumerableGetAllTHMonitor()
{
returnTHMonitors;
}
public THMonitor GetTHMonitorByName(string name)
{
THMonitor contact = THMonitors.FirstOrDefault(item => item.Name == name);
if(contact == null)
{
throw new HttpResponseException(HttpStatusCode.NotFound);
}
returncontact;
}
7、這樣,最簡單的一個WebAPI項目就完成了,直接運行即可,運行地址為https://localhost:44382/。
Web API測試
使用Postman介面工具來進行測試。
Postman是一款功能強大的HTTP調試與模擬插件。獲取安裝包,後台回復 Postman
1、啟動Postman之後,在地址欄輸入https://localhost:44382/,如果要獲取所有的數據,請求方式選擇Get,地址欄後面加個api/THMonitor,點擊Send,可以看到返回的數據,結果顯示為JSON格式。
2、如果想要查詢某個數據,可以加個參數,地址欄為https://localhost:44382/api/THMonitor?Name=溫度1,查詢結果如下所示:
3、地址欄格式可以參考項目中的WebApiConfig.cs文件:
我是新閣上位機開發的付老師,用我的專業,成就你的夢想!
-END-
❽ 如何使 WebAPI 自動生成漂亮又實用在線API文檔
1.1 SwaggerUI
SwaggerUI 是一個簡單的Restful API 測試和文檔工具。簡單、漂亮、易用(官方demo)。通過讀取JSON 配置顯示API. 項目本身僅僅也只依賴一些 html,css.js靜態文件. 你可以幾乎放在任何Web容器上使用。
1.2 Swashbuckle
Swashbuckle 是.NET類庫,可以將WebAPI所有開放的控制器方法生成對應SwaggerUI的JSON配置。再通過SwaggerUI 顯示出來。類庫中已經包含SwaggerUI 。所以不需要額外安裝。
2.快速開始
創建項目 OnlineAPI來封裝網路音樂服務(示例下載) ,通過API可以搜索、獲取音樂的信息和播放連接。
我盡量刪除一些我們demo中不會用到的一些文件,使其看上去比較簡潔。
WebAPI 安裝 Swashbuckle
Install-Package Swashbuckle
代碼注釋生成文檔說明。
Swashbuckle 是通過生成的XML文件來讀取注釋的,生成 SwaggerUI,JSON 配置中的說明的。
安裝時會在項目目錄 App_Start 文件夾下生成一個 SwaggerConfig.cs 配置文件,用於配置 SwaggerUI 相關展示行為的。如圖:
將配置文件大概99行注釋去掉並修改為
c.IncludeXmlComments(GetXmlCommentsPath(thisAssembly.GetName().Name));
並在當前類中添加一個方法
/// <summary>
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
protected static string GetXmlCommentsPath(string name)
{
return string.Format(@"{0}\bin\{1}.XML", AppDomain.CurrentDomain.BaseDirectory, name);
}
緊接著你在此Web項目屬性生成選卡中勾選 「XML 文檔文件」,編譯過程中生成類庫的注釋文件
添加網路音樂 3個API
訪問 http://<youhost>/swagger/ui/index,最終顯示效果
我們通過API 測試API 是否成功運行
3.添加自定義HTTP Header
在開發移動端 API時常常需要驗證許可權,驗證參數放在Http請求頭中是再好不過了。WebAPI配合過濾器驗證許可權即可
首先我們需要創建一個 IOperationFilter 介面的類。IOperationFilter
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Http;
using System.Web.Http.Description;
using System.Web.Http.Filters;
using Swashbuckle.Swagger;
namespace OnlineAPI.Utility
{
public class HttpHeaderFilter : IOperationFilter
{
public void Apply(Operation operation, SchemaRegistry
schemaRegistry, ApiDescription apiDescription)
{
if (operation.parameters == null) operation.parameters = new
List<Parameter>();
var filterPipeline =
apiDescription.ActionDescriptor.GetFilterPipeline();
//判斷是否添加許可權過濾器
var isAuthorized = filterPipeline.Select(filterInfo =>
filterInfo.Instance).Any(filter => filter is IAuthorizationFilter);
//判斷是否允許匿名方法
var allowAnonymous =
apiDescription.ActionDescriptor.GetCustomAttributes<AllowAnonymousAttribute>().Any();
if (isAuthorized && !allowAnonymous)
{
operation.parameters.Add(new Parameter
{
name = "access-key",
@in = "header",
description = "用戶訪問Key",
required = false,
type = "string"
});
}
}
}
}
在 SwaggerConfig.cs 的 EnableSwagger 配置匿名方法類添加一行注冊代碼
c.OperationFilter<HttpHeaderFilter>();
添加Web許可權過濾器
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Text;
using System.Web;
using System.Web.Http;
using System.Web.Http.Controllers;
using Newtonsoft.Json;
namespace OnlineAPI.Utility
{
/// <summary>
///
/// </summary>
public class AccessKeyAttribute : AuthorizeAttribute
{
/// <summary>
/// 許可權驗證
/// </summary>
/// <param name="actionContext"></param>
/// <returns></returns>
protected override bool IsAuthorized(HttpActionContext actionContext)
{
var request = actionContext.Request;
if (request.Headers.Contains("access-key"))
{
var accessKey = request.Headers.GetValues("access-key").SingleOrDefault();
//TODO 驗證Key
return accessKey == "123456789";
}
return false;
}
/// <summary>
/// 處理未授權的請求
/// </summary>
/// <param name="actionContext"></param>
protected override void HandleUnauthorizedRequest(HttpActionContext actionContext)
{
var content = JsonConvert.SerializeObject(new {State = HttpStatusCode.Unauthorized});
actionContext.Response = new HttpResponseMessage
{
Content = new StringContent(content, Encoding.UTF8, "application/json"),
StatusCode = HttpStatusCode.Unauthorized
};
}
}
}
在你想要的ApiController 或者是 Action 添加過濾器
[AccessKey]
最終顯示效果
4.顯示上傳文件參數
SwaggerUI 有上傳文件的功能和添加自定義HTTP Header 做法類似,只是我們通過特殊的設置來標示API具有上傳文件的功能
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Http.Description;
using Swashbuckle.Swagger;
namespace OnlineAPI.Utility
{
/// <summary>
///
/// </summary>
public class UploadFilter : IOperationFilter
{
/// <summary>
/// 文件上傳
/// </summary>
/// <param name="operation"></param>
/// <param name="schemaRegistry"></param>
/// <param name="apiDescription"></param>
public void Apply(Operation operation, SchemaRegistry schemaRegistry, ApiDescription apiDescription)
{
if (!string.IsNullOrWhiteSpace(operation.summary) && operation.summary.Contains("upload"))
{
operation.consumes.Add("application/form-data");
operation.parameters.Add(new Parameter
{
name = "file",
@in = "formData",
required = true,
type = "file"
});
}
}
}
}
在 SwaggerConfig.cs 的 EnableSwagger 配置匿名方法類添加一行注冊代碼
c.OperationFilter<UploadFilter>();
API 文檔展示效果
❾ Asp.netCore3.0 WebApi從0到1手摸手教你寫【1】簡單的webapi介面
Visual Studio 2019
.net core 3.0
具體步驟如下圖:
此處我們選擇API(新手不推薦選擇空項目,選擇API系統會為我們自動創建WebApi需要的一些配置文件等),Https配置這一項我們暫時不勾選,目前我們不配置Https。
F5運行項目,然後就可以看到微軟為我們寫好的一個天氣預報示例webapi了,這里只有一個Get請求示例,返回值為json格式。
注意: services.AddControllers(); 和 endpoints.MapControllers(); 方法成對出現, 這是.net core3.0中的最新寫法
ConfigureServices方法
用來向容器中注冊服務,注冊好的服務可以在其他地方進行調用.
Configure方法
用來配置中間件管道,即如何響應http請求.
1 右鍵刪除系統默認創建的 WeatherForecastController.cs 和 WeatherForecast.cs
2 新建一個控制器,命名: UserController.cs
問題來了,為啥直接給打開 weatherforecast ,而且還404了,別急,往下看。
(┬_┬)怎麼還是404?別急繼續往下看
上面增加 action 雖然能達到想要的結果,但是每次新建一個 Controller 都有寫個 action 萬一要是忘記了又要忙乎半天,有沒有一勞永逸的辦法呢?
繼續往下看:
1.首先去掉Controller里的 Route 和 ApiController
2.修改 Startup.cs ,增加路由模版:
今天就到這里,後期繼續完善我們的webapi。
https://github.com/xiaxiaoqian/NetCore3.0-WebApi