ASP.NET Boilerplate WebApi方法

时间:2015-01-13 22:13:56

标签: c# asp.net asp.net-web-api boilerplate

我正在尝试在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 / POST方法(Boilerplate文档中没有关于它的信息)

当我调用方法[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方法的问题仍然存在。

1 个答案:

答案 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