webapi教程nodejs(webapi介面搭建)

本文目錄一覽:

現在webform處理ajax請求用一般處理程序ashx還是用後台去處理

1、一般是用ashx處理,ashx就是後台處理。

2、webform要用ajax的話,主流就是ashx,另外還可以依賴第三方庫直接在aspx中處理,例如ajaxpro

3、既然你都用原生html了,那麼可以採用如下方式:①:利用asp.net mvc來作為web框架;②:利用前端框架實現前後端分離,後端可以採用webapi、nodejs等實現。

如何使 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

訪問 ;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

ListParameter();

var filterPipeline =

apiDescription.ActionDescriptor.GetFilterPipeline();

//判斷是否添加許可權過濾器

var isAuthorized = filterPipeline.Select(filterInfo =

filterInfo.Instance).Any(filter = filter is IAuthorizationFilter);

//判斷是否允許匿名方法

var allowAnonymous =

apiDescription.ActionDescriptor.GetCustomAttributesAllowAnonymousAttribute().Any();

if (isAuthorized !allowAnonymous)

{

operation.parameters.Add(new Parameter

{

name = “access-key”,

@in = “header”,

description = “用戶訪問Key”,

required = false,

type = “string”

});

}

}

}

}

在 SwaggerConfig.cs 的 EnableSwagger 配置匿名方法類添加一行註冊代碼

c.OperationFilterHttpHeaderFilter();

添加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.OperationFilterUploadFilter();

API 文檔展示效果

零基礎如何學WEB前端

1. Web前端是做什麼的?

學習之前我對網頁設計、UI、網頁制所盒Web前端的概念很混淆,上網查了才明白:網頁設計是指運用一些軟體對網站進行美化,解決「好看」的問題;UI是指人與界面互動的優化,解決「舒適」的問題;網頁製作著重PC端網頁製作;而Web前端包括PC端和移動端的前端界面製作。

2. Web前端的基礎技能及工作職責是什麼?

愛它就要更深入了解它,學習Web前端就要清楚地知道Web前端工程師需要什麼基礎技能及其工作職責。其實,這「很簡單」,只要你精通HTML+css(包括現在的HTML5+CSS3)、JavaScript、JQuery,了解界面設計,了解後端編程,伺服器知識+後端語言基礎。

3. 怎麼樣才能學好拿高薪,Web前端開發職業的前途怎樣?

個人覺得三百六十行,行行都蘊藏的無限可能,干一行就愛一行,只要腳踏實地,努力學技術,技術硬了,自然會有前途和「錢」途。但是努力學習之前,必須要明確的目標,否則就是「看起來很認真」而已。

4. 如何學?

零基礎學前端的話,這些書籍資料可以參考一下:

1、《JavaScript高級程序設計(第3版) 紅皮書 》,適合有一定編程經驗的Web應用開發人員閱讀,也可作為高校及社會實用技術培訓相關專業課程的教材。

2、《JavaScript權威指南(第6版)》 犀牛書,本書不僅適合初學者系統學習,也適合有經驗的 JavaScript 開發者隨手翻閱。

3、《JavaScript DOM編程藝術 (第2版)》,本書在簡潔明快地講述JavaScript和DOM的基本知識之後,通過幾個實例演示了專業水準的網頁開發技術,透徹闡述了平穩退化等一批至關重要的 JavaScript編程原則和最佳實踐,並全面探討了HTML5以及jQuery等JavaScript庫。

4、《CSS權威指南(第三版)》,不管你是一個有經驗的Web開發人員還是一個徹底的初學者,《CSS權威指南(第3版)》都是你的CSS學習源泉。

5、《JavaScript設計模式》,適合JavaScript初學者、前端設計者、JavaScript程序員學習,也可以作為大專院校相關專業師生的學慣用書,以及培訓學校的教材。

6、《你不知道的JavaScript(上中下卷) 》,本書既適合JavaScript語言初學者了解其精髓,又適合經驗豐富的JavaScript開發人員深入學習。

7、《Vue.js權威指南》,該書內容全面,講解細緻,實例豐富,適用於各層次的開發者。

學習路線:

第1階段:前端頁面重構(4周)

內容包含了:(PC端網站布局項目、HTML5+CSS3基礎項目、WebApp頁面布局項目)

第2階段:JavaScript高級程序設計(5周)

內容包含:(原生JavaScript交互功能開發項目、面向對象進階與ES5/ES6應用項目、JavaScript工具庫自主研發項目)

第3階段:PC端全棧項目開發(3周)

內容包含:(jQuery經典交互特效開發、HTTP協議、Ajax進階與PHP/JAVA開發項目、前端工程化與模塊化應用項目、PC端網站開發項目、PC端管理信息系統前端開發項目)

第4階段:移動端項目開發(6周)

內容包含:(Touch端項目、微信場景項目、應用Angular+Ionic開發WebApp項目、應用Vue.js開發WebApp項目、應用React.js開發WebApp項目)

第5階段:混合(Hybrid,ReactNative)開發(1周)

內容包含:(微信小程序開發、ReactNative、各類混合應用開發)

第6階段:NodeJS全棧開發(1周)

內容包括:(WebApp後端系統開發、一、NodeJS基礎與NodeJS核心模塊二、Express三、noSQL資料庫)

視頻教程:

網頁鏈接

希望對你有幫助,望採納~

JS本身並不難,為什麼前端學起來感覺很難

what? excuse me

javaScript不難?

javaScript只是入門不難,想精通是非常難的。 就像小學數學一樣,隨便一個正常人都能考試98分以上,但到了初中以上,數學的難度就呈幾何倍數的增加。

而且由於javaScript這麼語言最近幾年非常活躍,而且前端發展太快,各種標準推出速度也在加快,主流框架一年換幾個, 要掌握的知識面非常廣。

而且由於NODEJS的出現,javascript已經具備後端語言的能力,還得掌握另一套不同的開發設計模式。

並且canvas的出現,讓js語言具備了圖形化能力,做遊戲以及圖形設計就需要掌握這個。

現在還敢說javascript簡單?

js,nodejs如何判斷文件是什麼編碼格式

nodejs編碼只支持utf8的編碼方式,無論是打開某個文件或者寫.js腳本都得以utf8的編碼方式保存,不然程序無法運行,讀出來的文件是亂碼。

如果是在前台,讀取文件是通過FileReader或者FileReaderSync這兩個webAPI和input[type=’file’]標籤來配合來完成,但是這個兩個API已經包涵了判斷文件的編碼方式的功能,無論是GBK還是utf8編碼的文件都能正確打開不出現亂碼,但是nodejs就會出現這樣的問題,讀取gbk和unicode編碼的文件出現奇怪的亂碼,有一個模塊iconv-lite可以解決編碼問題,但是前提是你得知道這個文件的編碼方式,舉個例子:

有一個gkb的文件叫gbk.txt正確查看它的方式如下:

var icon=require(‘iconv-lite’);

var fs=require(‘fs’)

fs.readFile(‘gbk.txt’,function(err,buffer){

var str=iconv.decode(buffer,’gbk’)

console.log(str)//得到無亂碼的內容

})

但是如果不知道文件的編碼方式,那有該怎麼辦呢?

那就來聊一聊編碼方式,首先UNICODE編碼,UNICODE編碼的文件無論內容是什麼,前兩個位元組要不是FF FE 或者 FE FF,

utf-8頭兩個位元組是EF BB,至於gbk吧,目前我沒找到判斷方法,只能粗略的判斷如果不是unicode和utf8就認為是GBK,

代碼如下:

var fs=require(‘fs’)

fs.readFile(‘code.txt’,function(err,buffer){

if(buffer[0]==0xffbuffer[1]==0xfe){

console.log(‘unicode’)

}else if(buffer[0]==0xfebuffer[1]==0xff){

console.log(‘unicode’)

}else if(buffer[0]==0xefbuffer[1]==0xbb){

console.log(‘utf8’)

}else{

console.log(‘else’)

}

})

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/182321.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-24 06:20
下一篇 2024-11-24 06:20

相關推薦

  • MQTT使用教程

    MQTT是一種輕量級的消息傳輸協議,適用於物聯網領域中的設備與雲端、設備與設備之間的數據傳輸。本文將介紹使用MQTT實現設備與雲端數據傳輸的方法和注意事項。 一、準備工作 在使用M…

    編程 2025-04-29
  • Python3.6.5下載安裝教程

    Python是一種面向對象、解釋型計算機程序語言。它是一門動態語言,因為它不會對程序員提前聲明變數類型,而是在變數第一次賦值時自動識別該變數的類型。 Python3.6.5是Pyt…

    編程 2025-04-29
  • Deepin系統分區設置教程

    本教程將會詳細介紹Deepin系統如何進行分區設置,分享多種方式讓您了解如何規劃您的硬碟。 一、分區的基本知識 在進行Deepin系統分區設置之前,我們需要了解一些基本分區概念。 …

    編程 2025-04-29
  • 寫代碼新手教程

    本文將從語言選擇、學習方法、編碼規範以及常見問題解答等多個方面,為編程新手提供實用、簡明的教程。 一、語言選擇 作為編程新手,選擇一門編程語言是很關鍵的一步。以下是幾個有代表性的編…

    編程 2025-04-29
  • Qt雷達探測教程

    本文主要介紹如何使用Qt開發雷達探測程序,並展示一個簡單的雷達探測示例。 一、環境準備 在開始本教程之前,需要確保你的開發環境已經安裝Qt和Qt Creator。如果沒有安裝,可以…

    編程 2025-04-29
  • 猿編程python免費全套教程400集

    想要學習Python編程嗎?猿編程python免費全套教程400集是一個不錯的選擇!下面我們來詳細了解一下這個教程。 一、課程內容 猿編程python免費全套教程400集包含了從P…

    編程 2025-04-29
  • Python煙花教程

    Python煙花代碼在近年來越來越受到人們的歡迎,因為它可以讓我們在終端里玩煙花,不僅具有視覺美感,還可以通過代碼實現動畫和音效。本教程將詳細介紹Python煙花代碼的實現原理和模…

    編程 2025-04-29
  • NodeJS 建立TCP連接出現粘包問題

    在TCP/IP協議中,由於TCP是面向位元組流的協議,發送方把需要傳輸的數據流按照MSS(Maximum Segment Size,最大報文段長度)來分割成若干個TCP分節,在接收端…

    編程 2025-04-29
  • 使用Snare服務收集日誌:完整教程

    本教程將介紹如何使用Snare服務收集Windows伺服器上的日誌,並將其發送到遠程伺服器進行集中管理。 一、安裝和配置Snare 1、下載Snare安裝程序並安裝。 https:…

    編程 2025-04-29
  • Java 監控介面返回信息報錯信息怎麼處理

    本文將從多個方面對 Java 監控介面返回信息報錯信息的處理方法進行詳細的闡述,其中包括如何捕獲異常、如何使用日誌輸出錯誤信息、以及如何通過異常處理機制解決報錯問題等等。以下是詳細…

    編程 2025-04-29

發表回復

登錄後才能評論