VB.NET 创建ASP.NET WebAPI及应用(一)

2021-12-06 16:02:52 浏览数 (1)

什么是API?

应用程序接口(API,Application Programming Interface)是基于编程语言构建的结构,使开发人员更容易地创建复杂的功能。它们抽象了复杂的代码,并提供一些简单的接口规则直接使用。

为什么要用API?

第一,它使用HTTP协议,可以很好的兼容其他语言,B4A,JS,PHP,JAVA,VBA,VB6等等;

第二,它可以很好的保护我们的隐私,当我们用VBA,VB6等语言访问数据库时,一般都是直接使用驱动TCP连接,然后,数据库密码账号等敏感信息都保存在代码里面,很容易就被人破解拿走;

第三,它可以把我们的业务逻辑很好的隐藏起来,用户只要传入参数,获取数据即可,根本不知道我们是如何逻辑取得数据;

在我看来,上面这几点就是促使我去使用WebAPI,个人观点哈!(大佬先靠边站哈,让我先装一会)

好了,开启今日的主题!!!!!!!!怎么用VB.NET 创建WebAPI服务

一,打开我们的

VS死丢丢,创建一个ASP.NET项目

二,精简APS.NET程序(这里只说WebAPI哈,其他的东西砍掉)

2.1 要砍掉的目录如下:

  • Areas
  • Content
  • fonts
  • Scripts
  • Views

2.1 砍掉App_Start目录下的BundleConfig.vb文件,然后在Global.asax下删除相应的配置BundleConfig.RegisterBundles(BundleTable.Bundles)

2.3 砍了这么多东西,我们要先测试一下项目能不能运行起来!!!!!!

测试前先把Controllers目录下的HomeController.vb控制器编辑一下

把原来的代码改一下

代码语言:javascript复制
''原代码
Public Class HomeController
    Inherits System.Web.Mvc.Controller

    Function Index() As ActionResult
        ViewData("Title") = "Home Page"

        Return View()
    End Function
End Class

新代码

代码语言:javascript复制
Public Class HomeController
    Inherits Controller

    Function Index() As String
        Return "你好啊!WebAPI服务器"
    End Function
End Class

运行看一下效果!!!!!!!

完美运行,精简到这里即可!!!!

三,下面来介绍一下精简后App_Start目录的文件吧!!(都是一些自己的见解)

3.1,首先出场的是我们的FilterConfig.vb同学,正如名字,他就是一个过滤器的配置,即可以配置respond也可以配置request的内容

3.2,接下来就是我们的路由大侠了RouteConfig.vb,这里面可以配置MVC路由和API等相关路由

3.3,最后就是我们的主角WebApiConfig.vb配置API相关属性和主路由

四,最后说的就是最常用的部分控制器目录Controllers,目录里面已经生成了两个默认的控制器,分别是MVC控制器HomeController.vb和WebAPI控制器ValuesController.vb

4.1 MVC控制器HomeController.vb继承了MVC的控制器基类,不知我们的主角,但是可以配置一个主页;

4.2 WebAPI控制器ValuesController.vb继承了ApiController的控制器基类

4.3 我们再次运行一下项目,看一下WebAPI控制器的访问,MVC控制已配置默认控制器Home启动项目是,第一眼看到的即是!!!

4.3.1 看下我们的WebAPI路由,我们跟着访问即可!!默认控制器是Values所以我们的地址是 localhost:63337/api/values/

4.3.2 得到的结果就是 value1 value2 的XML格式结果

4.4 可能有同学就会问了,怎么把返回的结果改成JSON格式呢?

只要在App_Start目录下WebApiConfig.vb的配置文件里面添加以下代码即可实现

代码语言:javascript复制
'配置eb API返回JSON字符串
        config.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore
        config.Formatters.Remove(config.Formatters.XmlFormatter)
        Dim jsonFormatter As Object = config.Formatters.OfType(Of JsonMediaTypeFormatter)().First()
        jsonFormatter.SerializerSettings.ContractResolver = New CamelCasePropertyNamesContractResolver()

再看一下返回的结果

五,我们在C目录里面Controllers新建一个LoginController.vb登录控制器简单测试一下

代码如下

代码语言:javascript复制
Imports System.Net
Imports System.Web.Http

Public Class LoginController
    Inherits ApiController

    ' GET api/login?
    ' <HttpGet> ''请求方式
    ' <ActionName("Token")> ''方法名称
    <AcceptVerbs("GET", "HEAD")> ''允许的请求方式
    <Route("api/login/token")> ''自定义路由
    Public Function GetToken(<FromUri()> uid As String, <FromUri()> pwd As String) As Object
        If uid = "admin" And pwd = "123" Then
            Return New Responobj With {
                    .Code = 200,
                    .Msg = "成功",
                    .Info = "登录系统成功",
                    .Datas = Now().GetHashCode
                }
        Else
            Return New Responobj With {
                  .Code = 400,
                  .Msg = "失败",
                  .Info = "账户或密码错误",
                  .Datas = Nothing
              }
        End If
    End Function


    ''' <summary>
    ''' 定义一个返回体
    ''' </summary>
    Public Class Responobj
        Public Property Code As Integer
        Public Property Msg As String
        Public Property Info As String
        Public Property Datas As Object
    End Class


End Class

5.1 输入错误账户密码测试一下效果

5.2 输入正确密码看一下效果

5.3 本文实例下载

代码语言:javascript复制
链接:https://pan.baidu.com/s/1Gv9l_4ZNrJVa0abXlZSopQ 
提取码:vbee 
--来自百度网盘超级会员V5的分享

0 人点赞