3

1. 新建一个webapi项目

clipboard.png

2. 项目打开之后,选择 引用,右键,管理NuGet程序包

clipboard.png

浏览,搜索swagger,选择第一个swashbuckle,安装

clipboard.png

3. 安装好之后,右键项目,选择属性,生成,在下面的输出那里勾选:XML文档文件,如果没有自动填充好路径,需要自己填写一下,文件名可以自己取。

clipboard.png
clipboard.png

4. 打开App_Start文件夹下的SwaggerConfig.cs文件,新增一个如下方法:

private static string GetXmlCommentsPath()
{
    return System.String.Format(@"{0}\bin\WebApiDemo.xml", System.AppDomain.CurrentDomain.BaseDirectory);
}

5. 其中WebApiDemo.xml这个文件名要和自己在前一步填写的文件名一致

clipboard.png

6. 搜索GetXmlCommentsPath,下面能搜到已经注释了,自己把注释放开,要是没搜到,就自己手动写一下c.IncludeXmlComments(GetXmlCommentsPath());注意要写在register方法里面

clipboard.png

7. 打开valuescontroller,自己写一些注释

clipboard.png

8. 运行项目,在根路径后面直接加swagger,就会自动跳转到文档,如:http://localhost:8970/swagger,能看到我们写的一些注释

clipboard.png
clipboard.png

9. 在实际应用中,完全使用webapi的restful风格的api设计是比较少见的,请求方式一般也只使用get请求和post请求,所以我们做一些修改,使用的是类似restful风格的api设计,修改一下webapi的路由配置

clipboard.png

10. 写类似下面的一个testcontroller,测试get请求和post请求

/// <summary>
    /// 测试的controller
    /// </summary>
    public class TestController : ApiController
    {
        
        /// <summary>
        /// get列表
        /// </summary>
        /// <returns></returns>
        public IEnumerable<string> Get()
        {
            return new string[] { "value1", "value2" };
        }

        /// <summary>
        /// get请求
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public string Get(int id)
        {
            return "value";
        }

        /// <summary>
        /// post请求
        /// </summary>
        /// <param name="token"></param>
        /// <param name="model"></param>
        /// <returns></returns>
        public HttpResponseMessage Post(string token, [FromBody]UserModel model)
        {
            CookieHelper.SetUserCookie(model);
            string strResult = "{\"UserName\": \"" + model.UserName + "\", \"Pwd\": \"" + model.Pwd + "\"}";
            return new HttpResponseMessage(System.Net.HttpStatusCode.OK)
            {
                Content = new StringContent(strResult, Encoding.UTF8, "text/json")
            };
        }
    }

get请求
clipboard.png
post请求
当请求的content-type是application/json的时候,请求的参数是json字符串,后台可以正常接收参数
clipboard.png
当请求的content-type是application/x-www-form-urlencoded的时候,请求的参数是如下的形式,后台就可以正常接收参数
clipboard.png


上帝遗忘之子
60 声望5 粉丝

全栈,运维