• c#后台调用API


           前两周赶上项目第一个版本上线,着实忙了一把,毕竟只有两个人负责。如今已完结,总算喘了一口气,现在任务就是写API、测API,许久之前写过JS前台调用 项目API,也写过后台调用开放的手机号归属地查询,这些仅仅是自己闲暇之余写的  最为简单的例子,算是过家家的级别吧,现在就项目各模块测试API时 注意的点和出现的问题进行记录。

    套路就是

    1.新建一个API 项目,引用web项目的dll 

    2.在API项目中 将要测试的方法全部写好(new对象,然后引用dll中方法)

    3.再新建一测试项目,根据url 拼接参数(API不认参数名和Action名,只识别参数个数)

    比如: 测试 web项目中的 A方法时

    ①  API项目中

           //调用A方法
            public IList<Student> Get(string conn, string Id, string level)
            {
                StudentBIZ biz = new StudentBIZ(conn, Id,level);
                return biz.A();
            }

    ②APITest项目中

                string url = "API网址" + "A方法控制器名";
                string AllUrl = string.Format("{0}?conn={1}&Id={2}&level={3}", url, conn, Id, level);
                var b = WebRequestHelper.GetData<Student>(AllUrl);
                return View(b);

    这里 WebRequestHelper 作为 APITest 调用WebAPI 方法的帮助类,针对需要的返回类型去编写对应的访问方法,一般都会有Post、Put、Get、Delete 等请求方式,网上也有很完善的Code,不想自己写,可以直接贴过来自己用。不够用的时候自己在写对应的访问方法,如:

            private static string PostWebApi(string url)
            {
                var request = HttpWebRequest.Create(url) as HttpWebRequest;                      
                request.Method = "Post";
                request.ContentType = "application/json; charset=utf-8";
                request.Timeout = 3000000;
                var app = request.Address.Segments[2];
                string result = "";
                request.ContentLength = 0;
                // 取得回應資料
                using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
                {
                    using (StreamReader sr = new StreamReader(response.GetResponseStream()))
                    {
                        result = sr.ReadToEnd();
                    }
                }
                return result;
            }

    红色部分是获取API项目中 对应方法的回调内容,如果你在API项目中对应的方法下打断点,调试到这里的时候就会跳转过去,有时候你想跑去DLL里面的方法中,只要将其web项目打开,不需要运行,直接在调的底层方法下打断点,程序即可跑进去。比如①中的 biz.A() 方法。

          调试的时候有时候会抛出不少异常,最常见的就是 405方法不被允许;其实就是请求方式不对,putpostget 等等的先屡清楚,然后就是发布服务器,很多时候,本地往往是正常的,一发布到服务器上就尴尬了,各种点击没有反应、或者404,一开始是比较头疼,后来做多了好耐晓得了一些套路,或者说是需要注意的点

    1. 404的错误,找不到是资源,就是路径的问题,服务器上发布站点、应用程式的时候对路径的要求也不一样,在发布程式的时候,URL前面会带有一个本地文件夹的名字,这里一定好区分好

    2. 点击按钮无响应, 这个肯定是程序出了问题,平时在本地写代码的时候,就随手返回一个bool值到前台,然后弹出成功/失败,但是部署到服务器上就不同了,一旦出了问题,也不能调试,只能靠猜。。。(笑),当然不是,主要方法下都会记录日志,看日志找错误。此外,对于网页的调试时,还可以新建一个实体类,写上bool、string 两个成员字段,返回前台的时候,直接返回此对象,string记录异常信息,正常则不记录,前天在解析此对象,弹出操作结果(若失败,则会提示失败原因)

  • 相关阅读:
    android SQLite使用
    蓝牙从搜索到成功配对的全过程
    vscode 开发.net core 从安装到部署 教程详解
    ServiceStack 简单服务搭建
    MongoDB 安装配置
    request.url 端口 错误
    Python 之 hello world
    .NET DateTime 源码学习
    Parallel.For 平行算法 使用
    Thread.Join 和 Task.Wait 方法
  • 原文地址:https://www.cnblogs.com/Sientuo/p/8058948.html
Copyright © 2020-2023  润新知