[关闭]
@vincent90 2016-01-19T08:04:01.000000Z 字数 3325 阅读 1486

WebAPI For EntAppFrameWork Handbook(中文版)

ASP.NET Web API 是一种框架,用于轻松构建可以访问多种客户端(包括浏览器和移动设备)的 HTTP 服务。 ASP.NET Web API 是一种用于在 .NET Framework 上构建 RESTful 应用程序的理想平台。

切换英文版

路由设计

路由中Action命名最好以动词+名词这种方式

Controller Action Http Verb URI
HTE GetModel GET /HTE/GetModel/{id}
HTE List GET /HTE/List?xxx={xxx}
HTE GetAnswerCard GET /HTE/GetAnswerCard?hteId={hteId}&userId={userId}
HTE CreateFull POST /HTE/CreateFull
HTE Update PUT /HTE/Update/{id}
HTE Remove DELETE /HTE/Remove/{id}

代码实现

使用基类

public class HTEController : ApiBaseController
{

}

Action和Model

使用特性([HttpGet]、[HttpPost]、[HttpPut]、[HttpDelete])

定义返回模型,属性名首字母应该小写!

public class HTEController : ApiBaseController
{
    [HttpGet]
    public HTEModel GetHTEModel(Int64 id)
    {
        HTEModel hTEModel = new HTEModel();
        HTE hte = EntAppFrameWork.EntAppFrameWorkContext.DomainModelService.ExtenedService<IHTE>().GetHteByHteId(id);
        hTEModel.hTEName = hte.Name;
        hTEModel.score = hte.Score.ToString();
        hTEModel.hTEType = hte.HTEType;
        hTEModel.startTime = hte.PublishDateTime;
        hTEModel.endTime = hte.EndTime;
        Collection<IncludeExerciseModel> exercises = new Collection<IncludeExerciseModel>();
        if (hte.Exercises != null)
        {
            foreach (var item in hte.Exercises)
            {
                IncludeExerciseModel includeExerciseModel = new IncludeExerciseModel();
                includeExerciseModel.exerciseId = item.Exercise.Key;
                includeExerciseModel.score = item.Score.ToString();
                includeExerciseModel.sequence = item.Sequence;
                exercises.Add(includeExerciseModel);
            }
        }
        hTEModel.exercises = exercises;
        return hTEModel;
    }
}



public class HTEModel
{
    public string hTEName { get; set; }
    public DateTime startTime { get; set; }
    public DateTime endTime { get; set; }
    public string score { get; set; }
    public Collection<IncludeExerciseModel> exercises { get; set; }
    public HTEType hTEType { get; set; }
}

接收参数DTO

DTO 是简单对象,它不应该包含任何业务逻辑。

    [HttpPost]
    public Int64 CreateFullHTE([FromBody]CreateFullHTEDTO createFullHTEDTO)
    {
        var hteID = EntAppFrameWork.EntAppFrameWorkContext.DomainModelService.ExtenedService<IHTE>().CreateFullHTE(createFullHTEDTO.HteName,createFullHTEDTO.Generatetype,createFullHTEDTO.HTEType,createFullHTEDTO.Exercises,createFullHTEDTO.CourseId,createFullHTEDTO.UserId, createFullHTEDTO.StartTime, createFullHTEDTO.EndTime);
        return hteID;
    }



    public class CreateFullHTEDTO
    {
        public string HteName { get; set; }
        public GenerateType Generatetype { get; set; }
        public HTEType HTEType { get; set; }
        public List<IncludeExerciseDto> Exercises { get; set; }
        public Int64 CourseId { get; set; }
        public Int64 UserId { get; set; }
        public DateTime StartTime { get; set; }
        public DateTime EndTime { get; set; }
    }

身份验证

安全令牌用于证明人的身份。令牌证明客户他们是谁。令牌就像一个电子密钥。

使用身份验证

需要在访问的URL后面加上ssotoken=您的Token

/Controller/Action?ssotoken=XXXX

不使用身份验证

需要在Controller或者Action上加上特性[AllowAnonymousAttribute]

 [AllowAnonymousAttribute]
public class XXController : ApiBaseController
{

}

异常处理

发生异常通常会返回以下的内容在体和头中,包含错误码和错误消息。

{
    "ErrorCode":"300300010",
    "Data":"",
    "ErrorMessage":"找不到该题"
}

帮助文档

之前在项目中有用到webapi对外提供接口,发现在项目中有根据webapi的方法和注释自动生成帮助文档,还可以测试webapi方法,功能很是强大,现拿出来与大家分享一下。

先看一下生成的webapi文档。

1、下图展示的是生成帮助文档首页面,其中Values是controller,API下面的列表展示出请求的http方法(Get,POST等),请求的action,方法的描述。

2、点击红框内的链接,打开api方法的详情页面,如下图所示,

3、点击Test API打开如下页面

4、输入参数,点击Send按钮,打开如下页面,可以看到返回值。

设置的方法步骤如下:

开发环境VS2012 + MVC4 + WEB API

1、通过NuGet引用Web API Test Client


引用玩该DLL会生成如下文件:


这里面就是我们的帮助文档界面

2、在项目属性中进行如下设置,勾选XMl文档文件,并设置路径

3、在项目的App_Data文件夹下创建XmlDocument.xml

4、打开\Areas\HelpPage\App_Start\HelpPageConfig.cs文件,取消如下代码注释

运行项目,打开http://localhost:3619/Help,即可看到自动生成好的api文档。

如果想添加测试按钮 请参照如下操作:Adding the Test API in The ASP.NET Web API Help Page

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注