zoukankan      html  css  js  c++  java
  • WebApi

    WebApi1

    WebApi

    一般创建webapi程序是在通过网站,IIS这种方式,我这里做实验使用OWIN这种方式,用控制台程序来实现的.

    1.新建一个控制台程序WebApiServer

    2.添加类Startup,代码如下

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace WebApiServer
    {
    public class Startup
    {
    
        public void Configuration(IAppBuilder app)
        {
            HttpConfiguration config = new HttpConfiguration();
            config.Routes.MapHttpRoute(name: "DefaultApi",
                routeTemplate: "api/{Controller}/{id}",
                defaults: new
                {
                    id = RouteParameter.Optional
                });
    
            app.UseWebApi(config);
        }
    
    }
    }
    

    很明显,现在IAppBuilder,HttpConfiguration是找不到引用的,得使用NuGet来找,而且还非常不好找,因为名字不同啊,NuGet这个问题很让我困扰,不知道大家有没有同感.反正我是添加了了无数次才搞定这个引用. 用NuGet添加

    Microsoft.aspnet.webapi 和 Microsoft.aspnet.webapi.Owin

    然后直接添加System.web的引用,终于不报错了,O(∩_∩)O....

    3.添加一个Student类

    namespace WebApiServer
    {
        class Student
        {
           public string ID { get; set; }
            public string Name { set; get; }
    
            public DateTime Birthday { set; get; }
    
        }
    }
    

    4.添加一个StudentController类

    namespace WebApiServer
    {
        class StudentController
        {
            public Student GetStudentByID(string id)
            {
                return new Student()
                {
                    ID = id,
                    Name = "Lily",
                    Birthday = DateTime.Now.AddYears(-10)
                };
            }
        }
    }
    

    5.在Main函数中添加

             var url = "http://localhost:8777/";
    
            var startOpts = new StartOptions(url);
            using (WebApp.Start<Startup>(startOpts))
            {
                 Console.WriteLine("不依托IIS的webapi;" + url);
                Console.ReadLine();
            }
    

    需要添加,Microsoft.Owin.Hosting;

    6.启动服务

    这时候启动,会报错System.MissingMemberException: 'The server factory could not be located for the given input: Microsoft.Owin.Host.HttpListener' 需要添加 Microsoft.Owin.Host.HttpListener

     添加后再次启动,启动成功.这时候打开浏览器URL:http://localhost:8777/api/Student/GetStudentByID 错误如图

     

    这是因为找不到Controller,修改StudentController,让其继承ApiController

    class StudentController: ApiController
    {
      //todo
    }
    

    再次启动,可惜还是不行.把StudentController,Student修改成public,再来,当然成功了,如图

    p6

    试试这个URL:http://localhost:8777/api/Student/GetStudentByID?id=5,见

    p7(参数问题后面在研究)

    7.客户端调用

    建立一个控制台程序,这面这段代码可以调用:

            string baseAddress = "http://localhost:8777/";
            HttpClient client = new HttpClient();
    
            var response = client.GetAsync(baseAddress + "api/student").Result;
    
            Console.WriteLine(response);
    
            Console.WriteLine(response.Content.ReadAsStringAsync().Result);
    
            Console.ReadLine();
    
  • 相关阅读:
    Jenkins + GitLab 通过 Webhook 自动触发构建爬坑记录
    Spring Cloud Eureka 学习记录
    [源码分析]ArrayList
    一个简单的统计问题(解决方案:Trie树)
    Redis基本数据类型命令汇总
    Redis的Pub/Sub客户端实现
    从ByteBuffer中解析整数
    学习T-io框架,从写一个Redis客户端开始
    折腾一下WebSocket的ArrayBuffer传输方式
    Ubuntu安装docker笔记
  • 原文地址:https://www.cnblogs.com/birds-zhu/p/9641343.html
Copyright © 2011-2022 走看看