RESTful API返回约定

时间:2014-03-30 06:38:57

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

目前我还在学习c#web API,我遇到了一些问题。

所以下面的代码片段显示了我将在数据库中创建新学生的部分代码,我要做的是创建对象,如果成功,它将返回HTTP-CREATED http响应代码并返回学生对象。

如果失败,它应该返回HTTP-BADREQUEST响应代码,并且还返回学生对象。

然而,为了返回响应代码,由于设置了返回类型,我无法返回学生对象,反之亦然。因此,这就是困境。

// POST api/student
        public HttpResponseMessage PostStudent(Models.Student student)
        {
            if (DBManager.createStudent(student) != null)
                return new HttpResponseMessage(HttpStatusCode.Created);
                // HOW TO RETURN STUDENT OBJECT?
            else
                return new HttpResponseMessage(HttpStatusCode.BadRequest);
                // HOW TO RETURN STUDENT OBJECT?
        }

2 个答案:

答案 0 :(得分:1)

HttpRequestMessageExtensions.CreateResponse<T> Method有一个名为value的可选形式参数,可用于创建包含状态代码和对象的HttpResponseMessage

return Request.CreateResponse(HttpStatusCode.Created, student);

答案 1 :(得分:-3)

我将告诉您我为公司构建Web服务器的经验:不要使用WebApi。有很多限制,简而言之,支持非常狭窄的使用场景。坚持传统的MVC控制器,生活更轻松:

public ActionResult PostStudent(Models.Student s){
    //do something
    Response.StatusCode = 400;
    return Json(s);
}