ABP(4) - 使用服务 - 官方教程扫盲贴之Service和IService的使用 (详细解说)

今天的目标

  • 1 学会使用Service
  • 2 了解Service的层次架构
  • 3 初探注入

1 添加服务接口, 请注意是在 Acme.BookStore.Application.Contracts, 因为我理解 Contracts是合约的意思, 是用来约束一些行为的, 比如约束服务.

Acme.BookStore.Application.Contracts项目中定义一个名为IBookAppService的接口:
using System;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;

namespace Acme.BookStore
{
    public interface IBookAppService :
        ICrudAppService< //定义了CRUD方法
            BookDto, //用来展示书籍
            Guid, //Book实体的主键
            PagedAndSortedResultRequestDto, //获取书籍的时候用于分页和排序
            CreateUpdateBookDto, //用于创建书籍
            CreateUpdateBookDto> //用于更新书籍
    {

    }
}

2 添加服务 Acme.BookStore.Application 中已经自动引用了 Acme.BookStore.Application.Contract, 所以可以直接继承接口 IBookAppService, 这也是约束

在Acme.BookStore.Application项目中实现名为BookAppService的IBookAppService:
using System;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;
using Volo.Abp.Domain.Repositories;

namespace Acme.BookStore
{
    public class BookAppService :
        CrudAppService<Book, BookDto, Guid, PagedAndSortedResultRequestDto,
                            CreateUpdateBookDto, CreateUpdateBookDto>,
        IBookAppService
    {
        public BookAppService(IRepository<Book, Guid> repository)
            : base(repository)
        {

        }
    }
}

Swagger UI, 选择web项目,启动, 然后在浏览后面输入/swagger, 可以看到api已经提供了. ABP会自动将我们的服务暴露出来以提供给第三方或者我们的前端使用

https://localhost:44389/swagger/index.html

swagger

posted @ 2020-08-28 08:54  三重罗生门  阅读(1802)  评论(0编辑  收藏  举报