鼎鼎知识库
Du kannst nicht mehr als 25 Themen auswählen Themen müssen mit entweder einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

2020.12.1后端接口格式实现.md 2.1KB

正常响应

{
    "version": "1.0.0.0",
    "code": 200,
    "message": "this is message",
    "isError": false,
    "data": {
        "id": 1,
        "name": "name",
        "age": 21
    }
}

================================

使用ApiResponse构造函数返回正常响应。

[Route("get1")]
[HttpGet]
public ApiResponse Get1()
{

    var data = new { Id = 1, Name = "name", Age = 21 };
    return new ApiResponse("this is message", data, StatusCodes.Status200OK);

}

异常响应

{
    "version": "1.0.0.0",
    "code": 500,
    "isError": true,
    "responseException": {
        "exceptionMessage": "Unhandled Exception occurred. Unable to process the request."
    }
}

================================

在接口层throw抛出异常

[Route("get1")]
[HttpGet]
public ApiResponse Get1()
{
    try
    {

        int i = 0;
        int j = 5 / i;
        return new ApiResponse("New record has been created in the database", 1, StatusCodes.Status201Created);
    }
    catch (Exception ex)
    {

        throw;
    }

}

==============================

使用ApiException抛出特定类型的异常。

[HttpGet]
[Route("get2")]
public ApiResponse Get2()
{
    throw new ApiException("doesnt exist", StatusCodes.Status404NotFound);
}

入参字段不符合要求响应

{
    "version": "1.0.0.0",
    "code": 400,
    "isError": true,
    "responseException": {
        "exceptionMessage": "Request responded with one or more validation errors occurred.",
        "validationErrors": [
            {
                "name": "Name",
                "reason": "最大长度5"
            },
            {
                "name": "Location",
                "reason": "最大长度5"
            }
        ]
    }
}

================================

使用ApiException抛模型错误异常。

[HttpPost]
[Route("customException")]
public ApiResponse Post1(AutoWrapperDemo model)
{
    if(!ModelState.IsValid)
    {
        throw new ApiException(ModelState.AllErrors());
    }
    return new ApiResponse("New record has been created in the database", 1, StatusCodes.Status201Created);
}