本文目录一览:
- 1、现在webform处理ajax请求用一般处理程序ashx还是用后台去处理
- 2、如何使 WebAPI 自动生成漂亮又实用在线API文档
- 3、零基础如何学WEB前端
- 4、JS本身并不难,为什么前端学起来感觉很难
- 5、js,nodejs如何判断文件是什么编码格式
现在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')
}
})