asp.net
基于 abp vnext 和 .net core 开发博客项目 -凯发ag旗舰厅登录网址下载
基于 abp vnext 和 .net core 开发博客项目 - 博客接口实战篇(五)
转载于:https://github.com/meowv/blog
上篇文章完成了文章详情页数据查询和清除缓存的功能。
本篇继续完成分类、标签、凯发ag旗舰厅登录网址下载的友情链接的后台操作接口,还是那句话,这些纯crud的内容,建议还是自己动手完成比较好,本篇将不再啰嗦,直接贴代码,以供参考。
分类
添加接口:查询分类列表querycategoriesforadminasync()、新增分类insertcategoryasync(…)、更新分类updatecategoryasync(…)、删除分类deletecategoryasync(…)
#region categories
///
/// 查询分类列表
///
///
task
///
/// 新增分类
///
///
///
task insertcategoryasync(editcategoryinput input);
///
/// 更新分类
///
///
///
///
task updatecategoryasync(int id, editcategoryinput input);
///
/// 删除分类
///
///
///
task deletecategoryasync(int id);
#endregion categories
查询分类列表需要返回的模型类querycategoryforadmindto.cs。
//querycategoryforadmindto.cs
namespace meowv.blog.application.contracts.blog
{
public class querycategoryforadmindto : querycategorydto
{
///
/// 主键
///
public int id { get; set; }
}
}
新增分类和更新分类需要的输入参数editcategoryinput.cs,直接继承categorydto即可。
//editcategoryinput.cs
namespace meowv.blog.application.contracts.blog.params
{
public class editcategoryinput : categorydto
{
}
}
分别实现这几个接口。
///
/// 查询分类列表
///
///
public async task
{
var result = new serviceresult
}
///
/// 新增分类
///
///
///
public async task insertcategoryasync(editcategoryinput input)
{
var result = new serviceresult();
}
这里需要一条automapper配置,将editcategoryinput转换为category,忽略id字段。
createmap
///
/// 更新分类
///
///
///
///
public async task updatecategoryasync(int id, editcategoryinput input)
{
var result = new serviceresult();
}
///
/// 删除分类
///
///
///
public async task deletecategoryasync(int id)
{
var result = new serviceresult();
}
在blogcontroller.admin.cs中添加接口。
#region categories
///
/// 查询分类列表
///
///
[httpget]
[authorize]
[route(“admin/categories”)]
[apiexplorersettings(groupname = grouping.groupname_v2)]
public async task
{
return await _blogservice.querycategoriesforadminasync();
}
///
/// 新增分类
///
///
///
[httppost]
[authorize]
[route(“category”)]
[apiexplorersettings(groupname = grouping.groupname_v2)]
public async task insertcategoryasync([frombody] editcategoryinput input)
{
return await _blogservice.insertcategoryasync(input);
}
///
/// 更新分类
///
///
///
///
[httpput]
[authorize]
[route(“category”)]
[apiexplorersettings(groupname = grouping.groupname_v2)]
public async task updatecategoryasync([required] int id, [frombody] editcategoryinput input)
{
return await _blogservice.updatecategoryasync(id, input);
}
///
/// 删除分类
///
///
///
[httpdelete]
[authorize]
[route(“category”)]
[apiexplorersettings(groupname = grouping.groupname_v2)]
public async task deletecategoryasync([required] int id)
{
return await _blogservice.deletecategoryasync(id);
}
#endregion categories
图片
标签
添加接口:查询标签列表querytagsforadminasync()、新增标签inserttagasync(…)、更新标签updatetagasync(…)、删除标签deletetagasync(…)
#region tags
///
/// 查询标签列表
///
///
task
///
/// 新增标签
///
///
///
task inserttagasync(edittaginput input);
///
/// 更新标签
///
///
///
///
task updatetagasync(int id, edittaginput input);
///
/// 删除标签
///
///
///
task deletetagasync(int id);
#endregion tags
查询标签列表需要返回的模型类querytagforadmindto.cs。
//querytagforadmindto.cs
namespace meowv.blog.application.contracts.blog
{
public class querytagforadmindto : querytagdto
{
///
/// 主键
///
public int id { get; set; }
}
}
新增标签和更新标签需要的输入参数edittaginput.cs,直接继承tagdto即可。
//edittaginput.cs
namespace meowv.blog.application.contracts.blog.params
{
public class edittaginput : tagdto
{
}
}
分别实现这几个接口。
///
/// 查询标签列表
///
///
public async task
{
var result = new serviceresult
}
///
/// 新增标签
///
///
///
public async task inserttagasync(edittaginput input)
{
var result = new serviceresult();
}
这里需要一条automapper配置,将editcategoryinput转换为tag,忽略id字段。
createmap
///
/// 更新标签
///
///
///
///
public async task updatetagasync(int id, edittaginput input)
{
var result = new serviceresult();
}
///
/// 删除标签
///
///
///
public async task deletetagasync(int id)
{
var result = new serviceresult();
}
在blogcontroller.admin.cs中添加接口。
#region tags
///
/// 查询标签列表
///
///
[httpget]
[authorize]
[route(“admin/tags”)]
[apiexplorersettings(groupname = grouping.groupname_v2)]
public async task
{
return await _blogservice.querytagsforadminasync();
}
///
/// 新增标签
///
///
///
[httppost]
[authorize]
[route(“tag”)]
[apiexplorersettings(groupname = grouping.groupname_v2)]
public async task inserttagasync([frombody] edittaginput input)
{
return await _blogservice.inserttagasync(input);
}
///
/// 更新标签
///
///
///
///
[httpput]
[authorize]
[route(“tag”)]
[apiexplorersettings(groupname = grouping.groupname_v2)]
public async task updatetagasync([required] int id, [frombody] edittaginput input)
{
return await _blogservice.updatetagasync(id, input);
}
///
/// 删除标签
///
///
///
[httpdelete]
[authorize]
[route(“tag”)]
[apiexplorersettings(groupname = grouping.groupname_v2)]
public async task deletetagasync([required] int id)
{
return await _blogservice.deletetagasync(id);
}
#endregion tags
图片
友链
添加接口:查询友链列表queryfriendlinksforadminasync()、新增友链insertfriendlinkasync(…)、更新友链updatefriendlinkasync(…)、删除友链deletefriendlinkasync(…)
#region friendlinks
///
/// 查询友链列表
///
///
task
///
/// 新增友链
///
///
///
task insertfriendlinkasync(editfriendlinkinput input);
///
/// 更新友链
///
///
///
///
task updatefriendlinkasync(int id, editfriendlinkinput input);
///
/// 删除友链
///
///
///
task deletefriendlinkasync(int id);
#endregion friendlinks
查询友链列表需要返回的模型类queryfriendlinkforadmindto.cs。
//queryfriendlinkforadmindto.cs
namespace meowv.blog.application.contracts.blog
{
public class queryfriendlinkforadmindto : friendlinkdto
{
///
/// 主键
///
public int id { get; set; }
}
}
新增友链和更新友链需要的输入参数editfriendlinkinput.cs,直接继承friendlinkdto即可。
//editfriendlinkinput .cs
namespace meowv.blog.application.contracts.blog.params
{
public class editfriendlinkinput : friendlinkdto
{
}
}
分别实现这几个接口。
///
/// 查询友链列表
///
///
public async task
{
var result = new serviceresult
- , ienumerable
}
///
/// 新增友链
///
///
///
public async task insertfriendlinkasync(editfriendlinkinput input)
{
var result = new serviceresult();
}
///
/// 更新友链
///
///
///
///
public async task updatefriendlinkasync(int id, editfriendlinkinput input)
{
var result = new serviceresult();
}
///
/// 删除友链
///
///
///
public async task deletefriendlinkasync(int id)
{
var result = new serviceresult();
}
其中查询友链列表和新增友链中有两条automapper配置。
createmap
createmap
在blogcontroller.admin.cs中添加接口。
#region friendlinks
///
/// 查询友链列表
///
///
[httpget]
[authorize]
[route(“admin/friendlinks”)]
[apiexplorersettings(groupname = grouping.groupname_v2)]
public async task
{
return await _blogservice.queryfriendlinksforadminasync();
}
///
/// 新增友链
///
///
///
[httppost]
[authorize]
[route(“friendlink”)]
[apiexplorersettings(groupname = grouping.groupname_v2)]
public async task insertfriendlinkasync([frombody] editfriendlinkinput input)
{
return await _blogservice.insertfriendlinkasync(input);
}
///
/// 更新友链
///
///
///
///
[httpput]
[authorize]
[route(“friendlink”)]
[apiexplorersettings(groupname = grouping.groupname_v2)]
public async task updatefriendlinkasync([required] int id, [frombody] editfriendlinkinput input)
{
return await _blogservice.updatefriendlinkasync(id, input);
}
///
/// 删除友链
///
///
///
[httpdelete]
[authorize]
[route(“friendlink”)]
[apiexplorersettings(groupname = grouping.groupname_v2)]
public async task deletefriendlinkasync([required] int id)
{
return await _blogservice.deletefriendlinkasync(id);
}
#endregion
图片
next
截止本篇,基于 abp vnext 和 .net core 开发博客项目 系列的后台api部分便全部开发完成了。
本博客项目系列是我一边写代码一边记录后的成果,并不是开发完成后再拿出来写的,涉及到东西也不是很多,对于新手入门来说应该是够了的,如果你从中有所收获请多多转发分享。
在此,希望大家可以关注一下我的微信公众号:『阿星plus』,文章将会首发在公众号中。
现在有了api,大家可以选择自己熟悉的方式去开发前端界面,比如目前我博客的线上版本就是用的 asp.net core web ,感兴趣的可以去 release 分支查看。
关于前端部分,看到有人呼吁vue,说实话前端技术不是很厉害,本职主要是后端开发,可能达不到预期效果。
所以我准备入坑 blazor 😂,接下来就现学现卖吧,一起学习一起做项目一起进步,加油💪
开源地址:https://github.com/meowv/blog/tree/blog_tutorial
总结
以上是凯发ag旗舰厅登录网址下载为你收集整理的基于 abp vnext 和 .net core 开发博客项目 - 博客接口实战篇(五)的全部内容,希望文章能够帮你解决所遇到的问题。
如果觉得凯发ag旗舰厅登录网址下载网站内容还不错,欢迎将凯发ag旗舰厅登录网址下载推荐给好友。
- 上一篇: 基于 abp vnext 和 .net
- 下一篇: 基于 abp vnext 和 .net