当前位置: 首页 > news >正文

.Net接口调试与案例

1.通过查看日志,可以看出问题的原因。

2.断点调试。

3.本地测试,确保无误后,线上测试。

4.输出测试。

通过get的方式,测试接口。

// [HttpPost]
public ActionResult SearchGroup(string appType, string keyWord, string userName)
{
    GroupListModel model = new GroupListModel(); // 新建model对象
    var groups = _groupService.SearchGroup(appType, keyWord);
    foreach (var item in groups)
    {
        model.Group.Add(new GroupModel()
        {
            GroupId = item.Id,
            Title = item.Title,
            Avatar = item.Avatar,
            OwnerId = item.OwnerId,
            IsDismiss = item.IsDismiss
        });
    }

    // return Json(new { result = true, info = model });
    return Json(new { result = true, info = model }, JsonRequestBehavior.AllowGet);
}

通过post的方式,测试接口。

[HttpPost]
public ActionResult SearchGroup(string appType, string keyWord, string userName)
{
    GroupListModel model = new GroupListModel(); // 新建model对象
    var groups = _groupService.SearchGroup(appType, keyWord);
    foreach (var item in groups)
    {
        model.Group.Add(new GroupModel()
        {
            GroupId = item.Id,
            Title = item.Title,
            Avatar = item.Avatar,
            OwnerId = item.OwnerId,
            IsDismiss = item.IsDismiss
        });
    }

    return Json(new { result = true, info = model });
}

有时候编辑器不报错,不一定就是完全正确的。

下面是接口的终端代码

[HttpPost]
public ActionResult SearchGroup(string appType, string keyWord, string userName)
{
    GroupListModel model = new GroupListModel(); // 新建model对象
    var groups = _groupService.SearchGroup(appType, keyWord);
    foreach (var item in groups)
    {
        model.Group.Add(new GroupModel()
        {
            GroupId = item.Id,
            Title = item.Title,
            Avatar = item.Avatar,
            OwnerId = item.OwnerId,
            IsDismiss = item.IsDismiss
        });
    }

    return Json(new { result = true, info = model });
}

目标是获取群组数据,
首先创建一个GroupListModel。它的Group属性,对应GroupModel。GroupModel中有相应的所需的属性值。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace Ddd.Web.Models.Customer
{
    public partial class GroupListModel
    {
        public GroupListModel()
        {
            this.Group = new List<GroupModel>();
        }
        public List<GroupModel> Group { get; set; }
    }

    public partial class GroupModel
    {
        public int GroupId { get; set; }
        public string Title { get; set; }
        public string Avatar { get; set; }
        public bool IsFriend { get; set; }
        public int OwnerId { get; set; }
        public bool IsDismiss { get; set; }
    }
}

然后根据_groupService的SearchGroup方法查询数据,这里主要是一些与数据库交互的方法。各种增删改查都在这里进行。


using System;
using System.Collections.Generic;
using System.Linq;
using Ddd.Core.Caching;
using Ddd.Core.Data;
using Ddd.Core.Domain.Customers;
using Ddd.Services.Events;
using Ddd.Core;

namespace Ddd.Services.Customers
{
    /// <summary>
    /// Group service
    /// </summary>
    public partial class GroupService : IGroupService
    {
        #region Constants

        /// <summary>
        /// Key for caching
        /// </summary>
        private const string GROUPS_ALL_KEY = "YY.group.all";
        /// <summary>
        /// Key for caching
        /// </summary>
        /// <remarks>
        /// {0} : group ID
        /// </remarks>
        private const string GROUP_BY_ID_KEY = "YY.group.id-{0}";
        private const string GROUP_BY_APPTYPE_GROUPNAME_KEY = "YY.group.type-{0}.name-{1}";
        /// <summary>
        /// Key pattern to clear cache
        /// </summary>
        private const string GROUPS_PATTERN_KEY = "YY.group.";
        #endregion
        
        #region Fields
        private readonly IRepository<Group> _groupRepository;
        private readonly IEventPublisher _eventPublisher;
        private readonly ICacheManager _cacheManager;
        #endregion

        #region Ctor

        /// <summary>
        /// Ctor
        /// </summary>
        /// <param name="cacheManager">Cache manager</param>
        /// <param name="groupRepository">Group repository</param>
        /// <param name="eventPublisher">Event published</param>
        public GroupService(ICacheManager cacheManager,
            IRepository<Group> groupRepository,
            IEventPublisher eventPublisher)
        {
            this._cacheManager = cacheManager;
            this._groupRepository = groupRepository;
            this._eventPublisher = eventPublisher;
        }

        #endregion

        #region Methods

        /// <summary>
        /// Gets all Groups
        /// </summary>
        /// <returns>Groups</returns>
        public virtual IList<Group> GetAllGroups()
        {
            string key = GROUPS_ALL_KEY;
            return _cacheManager.Get(key, () =>
            {
                var query = from a in _groupRepository.Table
                            orderby a.Id
                            select a;
                return query.ToList();
            });
        }

        /// <summary>
        /// Gets a Group 
        /// </summary>
        /// <param name="groupId">Group identifier</param>
        /// <returns>Group</returns>
        public virtual Group GetGroupById(int groupId)
        {
            if (groupId == 0)
                return null;

            string key = string.Format(GROUP_BY_ID_KEY, groupId);
            return _cacheManager.Get(key, () => _groupRepository.GetById(groupId));
        }

        /// <summary>
        /// Inserts a Group
        /// </summary>
        /// <param name="group">Group</param>
        public virtual Group InsertGroup(Group group)
        {
            if (group == null)
                throw new ArgumentNullException("group");

            _groupRepository.Insert(group);

            _cacheManager.RemoveByPattern(GROUPS_PATTERN_KEY);

            //event notification
            _eventPublisher.EntityInserted(group);
            return group;
        }

        /// <summary>
        /// Updates the Group
        /// </summary>
        /// <param name="group">Group</param>
        public virtual void UpdateGroup(Group group)
        {
            if (group == null)
                throw new ArgumentNullException("group");

            _groupRepository.Update(group);

            _cacheManager.RemoveByPattern(GROUPS_PATTERN_KEY);

            //event notification
            _eventPublisher.EntityUpdated(group);
        }

        /// <summary>
        /// Deletes a Group
        /// </summary>
        /// <param name="group">Group</param>
        public virtual void DeleteGroup(Group group)
        {
            if (group == null)
                throw new ArgumentNullException("group");

            _groupRepository.Delete(group);

            _cacheManager.RemoveByPattern(GROUPS_PATTERN_KEY);

            //event notification
            _eventPublisher.EntityDeleted(group);
        }

        public virtual Group GetGroupBySysnameAndGroupName(string sysName, string groupName)
        {
            if (string.IsNullOrEmpty(sysName)||string.IsNullOrEmpty(groupName))
                return null;

            string key = string.Format(GROUP_BY_APPTYPE_GROUPNAME_KEY, sysName,groupName);
            return _cacheManager.Get(key, () => {
                var query = from g in _groupRepository.Table
                            where g.SystemName == sysName
                            && g.Title == groupName
                            && !g.IsDismiss
                            select g;
                return query.FirstOrDefault();
            });
        }


        /// <summary>
        /// 获取所有的朋友圈列表
        /// </summary>
        /// <param name="pageIndex"></param>
        /// <param name="pageSize"></param>
        /// <returns></returns>
        public virtual IPagedList<Group> GetAllGroups(int pageIndex = 0, int pageSize = int.MaxValue)
        {
            var query = from g in _groupRepository.Table
                        where !g.IsDismiss
                        orderby g.Id descending
                        select g;
            return new PagedList<Group>(query, pageIndex, pageSize);
        }

        public virtual List<Group> SearchGroup(string appType, string keyWord)
        {
            var query = from x in _groupRepository.Table
                        where x.SystemName == appType
                        && x.Title.Contains(keyWord)
                        && x.IsDismiss == false
                        orderby x.Id descending
                        select x; // 查询群名包含keyWord的数据
            return query.ToList();
        }
        #endregion
    }
}

获取groups数据之后,将其赋值到model中去,

foreach (var item in groups)
{
        model.Group.Add(new GroupModel()
        {
            GroupId = item.Id,
            Title = item.Title,
            Avatar = item.Avatar,
            OwnerId = item.OwnerId,
            IsDismiss = item.IsDismiss
        });
}

最后通过Json输出,

return Json(new { result = true, info = model });

编译好之后,将下面的dll上传发布,测试。
422101-20170516152456900-1448867280.png

小结;实践出真知,你们看了也没用,自己多练练吧。

相关文章:

  • git pull 和本地文件冲突解决
  • SQL Server 中BIT类型字段增删查改那点事
  • python写的百度图片爬虫
  • 《Netty官方文档》本地传输接口
  • tomcat java.lang.OutOfMemoryError: PermGen space解决
  • OTL调用存储过程/函数及注意事项
  • Yahoo的流计算引擎基准测试
  • Js基本方法
  • 【Java集合源代码剖析】TreeMap源代码剖析
  • Transient修饰符的使用
  • 【算法】 算法和数据结构绪论
  • 【转】Servlet 生命周期、工作原理
  • Openssl源代码整理学习---含P7/P10/P12说明
  • LeetCode OJ 之 Ugly Number II (丑数-二)
  • [计算机术语]缺省
  • Objective-C 中关联引用的概念
  • ucore操作系统实验笔记 - 重新理解中断
  • Vim Clutch | 面向脚踏板编程……
  • 和 || 运算
  • 码农张的Bug人生 - 见面之礼
  • 微信端页面使用-webkit-box和绝对定位时,元素上移的问题
  • 看到一个关于网页设计的文章分享过来!大家看看!
  • ​如何防止网络攻击?
  • ​软考-高级-信息系统项目管理师教程 第四版【第23章-组织通用管理-思维导图】​
  • ​一帧图像的Android之旅 :应用的首个绘制请求
  • # Maven错误Error executing Maven
  • #FPGA(基础知识)
  • #宝哥教你#查看jquery绑定的事件函数
  • #我与虚拟机的故事#连载20:周志明虚拟机第 3 版:到底值不值得买?
  • $(document).ready(function(){}), $().ready(function(){})和$(function(){})三者区别
  • (01)ORB-SLAM2源码无死角解析-(56) 闭环线程→计算Sim3:理论推导(1)求解s,t
  • (Mirage系列之二)VMware Horizon Mirage的经典用户用例及真实案例分析
  • (带教程)商业版SEO关键词按天计费系统:关键词排名优化、代理服务、手机自适应及搭建教程
  • (定时器/计数器)中断系统(详解与使用)
  • (读书笔记)Javascript高级程序设计---ECMAScript基础
  • (二)正点原子I.MX6ULL u-boot移植
  • (附源码)springboot宠物医疗服务网站 毕业设计688413
  • (考研湖科大教书匠计算机网络)第一章概述-第五节1:计算机网络体系结构之分层思想和举例
  • (亲测)设​置​m​y​e​c​l​i​p​s​e​打​开​默​认​工​作​空​间...
  • (三)centos7案例实战—vmware虚拟机硬盘挂载与卸载
  • (转)负载均衡,回话保持,cookie
  • ****** 二 ******、软设笔记【数据结构】-KMP算法、树、二叉树
  • ... 是什么 ?... 有什么用处?
  • .net 4.0 A potentially dangerous Request.Form value was detected from the client 的解决方案
  • .Net 高效开发之不可错过的实用工具
  • .NetCore项目nginx发布
  • .Net高阶异常处理第二篇~~ dump进阶之MiniDumpWriter
  • [AI]文心一言爆火的同时,ChatGPT带来了这么多的开源项目你了解吗
  • [Android 13]Input系列--获取触摸窗口
  • [android] 看博客学习hashCode()和equals()
  • [Android]Tool-Systrace
  • [C#]获取指定文件夹下的所有文件名(递归)
  • [CareerCup] 6.1 Find Heavy Bottle 寻找重瓶子
  • [CareerCup][Google Interview] 实现一个具有get_min的Queue
  • [EFI]DELL XPS13 9360电脑 Hackintosh 黑苹果efi引导文件