首页 > 编程知识 正文

webapi教程nodejs(webapi接口搭建)

时间:2023-12-24 12:05:50 阅读:321043 作者:LNUH

本文目录一览:

现在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')

}

})

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。