public async Task <IActionResult> Post([FromBody] PostAddResource postAddResource) { if (postAddResource == null) { return(BadRequest()); } if (!ModelState.IsValid) { return(new MyUnprocessableEntityObjectResult(ModelState)); } var newPost = _mapper.Map <PostAddResource, Post>(postAddResource); newPost.Author = "admin"; newPost.LastModified = DateTime.Now; await _postRepository.AddPost(newPost); if (!await _unitOfWork.SaveAsync()) { throw new Exception("Save Failed!"); } var resultResource = _mapper.Map <Post, PostResource>(newPost); return(CreatedAtRoute("GetPost", new { id = newPost.Id }, resultResource)); }
public async Task <IActionResult> Post([FromBody] PostAddResource postAddResource) { if (postAddResource == null) { return(BadRequest()); } if (!ModelState.IsValid) { return(new MyUnprocessableEntityObjectResult(ModelState)); } var newPost = _mapper.Map <PostAddResource, Post>(postAddResource); newPost.Author = "admin"; newPost.LastModified = DateTime.Now; _postRepository.AddPost(newPost); if (!await _unitOfWork.SaveAsync()) { throw new Exception("Save Failed!"); } var resultResource = _mapper.Map <Post, PostResource>(newPost); var links = CreateLinksForPost(newPost.Id); var linkedPostResource = resultResource.ToDynamic() as IDictionary <string, object>; linkedPostResource.Add("links", links); return(CreatedAtRoute("GetPost", new { id = linkedPostResource["Id"] }, linkedPostResource)); }
public async Task <ActionResult> Post([FromBody] PostAddResource postResource) { if (postResource == null) { return(BadRequest()); } //使用Fluent Validator var resultValidator = _validator.Validate(postResource); if (!resultValidator.IsValid) { //验证失败 string ErrorMessage = string.Join(";", resultValidator.Errors); // return new ObjectResult(new { code = 422, ErrorMessage = ErrorMessage }); return(UnprocessableEntity(ErrorMessage));//422错误 } var newPost = _mapper.Map <PostAddResource, Post>(postResource); newPost.Author = "Admin"; newPost.LastModified = DateTime.Now; _postRepository.AddPost(newPost); //工作单元 if (!await _unitOfWork.SaveAsync()) { throw new Exception("save fields"); } var resultResource = _mapper.Map <Post, PostResource>(newPost); //返回当前创建的内容,通过headers中的Localhost return(CreatedAtRoute("GetPost", new { Id = resultResource.Id }, resultResource)); }
public async Task <IActionResult> Post([FromBody] PostAddResource postAddResource) { #region 数据合法性判断 if (postAddResource == null) { return(BadRequest()); } if (!ModelState.IsValid) { return(new MyUnprocessableEntityObjectResult(ModelState)); } #endregion //从PostResource转换为PostEntity var newPost = mapper.Map <PostAddResource, Post>(postAddResource); //完善属性值 newPost.Author = "zhusir"; newPost.LastModified = DateTime.Now; #region 向数据库添加数据 postRepository.AddPost(newPost); if (!await unitOfWork.SaveAsync()) { throw new Exception("保存失败"); } #endregion //从postEntity转换为PostResource var resultResouce = mapper.Map <Post, PostResource>(newPost); #region 添加HATEOAS特性 //为新添加的资源创建links属性 var links = CreateLinksForPost(newPost.id); //向资源中添加links属性 var linkedPostResource = resultResouce.ToDynamic() as IDictionary <string, object>; linkedPostResource.Add("links", links); #endregion //通过CreatedAtRoute()方法返回201代码,并且在Header中附带GET到新建资源的URI return(CreatedAtRoute("GetPost", new { id = linkedPostResource["id"] }, linkedPostResource)); //var post = new Post //{ // Title = "Post Title add", // Body = "Post Body add", // Author = "zhusir", // LastModified = DateTime.Now //}; //postRepository.AddPost(post); //await unitOfWork.SaveAsync(); //return Ok(); }
public async Task <IActionResult> Post([FromBody] PostAddResource postAddResource) { if (postAddResource == null) { return(BadRequest()); } var newPost = _mapper.Map <PostAddResource, Post>(postAddResource); newPost.Author = "admin"; newPost.LastModified = DateTime.Now; _postRepository.AddPost(newPost); if (!await _unitOfWork.SaveAsync()) { throw new Exception("Save Failed"); } var resultResource = _mapper.Map <Post, PostResource>(newPost); return(Ok(resultResource)); }
public async Task <IActionResult> Post([FromBody] PostAddResource postAddResource) { if (postAddResource == null) { return(BadRequest()); } #region 本来应该启动这个验证的,但是由于自定义问题reamke的问题导致,所以gg 2019.8.2已经重新迁移填坑 if (!ModelState.IsValid) { //return UnprocessableEntity(ModelState); return(new MyUnprocessableEntityObjectResult(ModelState)); } #endregion var newPost = _mapper.Map <PostAddResource, Post>(postAddResource); newPost.Author = "admin"; newPost.LastModified = DateTime.Now; //这里是个坑,因为之前迁移表的时候PostConfiguration类中设置了IsRequired()的子段导致了这个值现在不能为空 //2019.8.2已经重新迁移填坑 //newPost.Remark = "这里是个坑,因为之前迁移表的时候PostConfiguration类中设置了IsRequired()的子段导致了这个值现在不能为空"; _postRepository.AddPost(newPost); if (!await _unitOfWork.SaveAsync()) { throw new Exception("save failed"); } var resultReosurece = _mapper.Map <Post, PostResource>(newPost); var links = CreateLinksForPost(newPost.Id); var linkedPostResource = resultReosurece.ToDynamic() as IDictionary <string, object>; linkedPostResource.Add("Link", links); // return Ok(resultPost); return(CreatedAtRoute("GetPost", new { id = linkedPostResource["id"] }, linkedPostResource)); }
public async Task <IActionResult> Post([FromBody] PostAddResource postAddResource) { if (postAddResource == null) { return(BadRequest()); } //验证,不符合要求,返回状态码422,UNprocessable Entity if (!ModelState.IsValid) { //return UnprocessableEntity(ModelState); //自定义 错误返回 return(new MyUnprocessableEntityObjectResult(ModelState)); } var newPost = _mapper.Map <PostAddResource, Post>(postAddResource); newPost.Author = "admin"; newPost.LastModified = DateTime.Now; _postRepository.AddPost(newPost); if (!await _unitOfWork.SaveAsync()) { throw new Exception("Save Failed!"); } var resultResource = _mapper.Map <Post, PostResource>(newPost); var links = CreateLinksForPost(newPost.Id); var linkedPostResource = resultResource.ToDynamic() as IDictionary <string, object>; linkedPostResource.Add("links", links); //根据rest风格, 创建资源成功,返回的状态码为201,而且要返回获取当前创建的资源的uri return(CreatedAtRoute("GetPost", new { id = newPost.Id }, linkedPostResource)); }