@vincent90
2016-01-19T08:04:01.000000Z
字数 3325
阅读 1486
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
{
}
使用特性([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