我正在尝试在ASP.NET Boilerplate上开展我的项目。
我现在正在创建动态Web API,这就是我所拥有的:
我的AppService:
public interface IBorrowLendAppService : IApplicationService
{
GetBorrowLendsOutput GetBorrowLends(GetBorrowLendsInput input);
}
我的输入:
public class GetBorrowLendsInput : IInputDto
{
public byte ItemType { get; set; }
public int PersonId { get; set; }
}
这是我的问题:
当我调用方法[GET] GetBorrowLends而没有任何数据时我收到错误:
{
"result": null,
"success": false,
"error": {
"code": 0,
"message": "Your request is not valid!",
"details": null,
"validationErrors": [
{
"message": "input is null!",
"members": [
"input"
]
}
]
},
"unAuthorizedRequest": false
}
当我尝试调用它时:
... / GetBorrowLends的ItemType = 0&安培; PERSONID = 1
我收到同样的错误
使用数据调用[POST]:
{
"input":{
"ItemType":"0",
"PersonId":"1"
}
}
返回另一个错误:
{
"result": null,
"success": false,
"error": {
"code": 0,
"message": "An internal error occured during your request!",
"details": null,
"validationErrors": null
},
"unAuthorizedRequest": false
}
我该如何处理?以及如何手动创建GET / POST方法?
由于
修改
我处理了不工作端点的问题。我错误地在POST消息中设置了'Content-Type'参数。
但是关于ApplicationService中的GET / POST方法的问题仍然存在。
答案 0 :(得分:2)
默认的HttpVerb设置为Post。
/// <summary>
/// Default HTTP verb if not set.
/// </summary>
private const HttpVerb DefaultVerb = HttpVerb.Post;
然后IApiControllerActionBuilder
中有一个方法可以更改动作的动词。
IApiControllerActionBuilder<T> WithVerb(HttpVerb verb);
您应该可以使用以下调用更改动词(在WebAPI模块的Initialize
中)
DynamicApiControllerBuilder
.For<ITaskAppService>("tasksystem/taskService")
.ForMethod("SomeMethod").WithVerb(HttpVerb.Get)
.Build();
可以获得更多信息on the website。