如何在POST请求响应正文中返回复杂对象 [英] How do I return complex object in POST request response body

查看:95
本文介绍了如何在POST请求响应正文中返回复杂对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

代码如下:



 public async Task< AppUser> CreateUser(AppUser用户,RegisterUserDto dto)
{
try
{
var result = await _userManager.CreateAsync(user,dto.Password);
if(result.Succeeded)
{
await _userManager.AddToRoleAsync(user,Member);
await _context.SaveChangesAsync();
返回用户;
}
返回null;

}
catch(exception ex)
{
_logger.LogError(CreateUser的AuthRepository错误,例如:+ ex.StackTrace,false);
}
返回null;
}







 [HttpPost] 
[ Route(createuser)]
public async Task< IActionResult> CreateUserAcc([FromBody] RegisterUserDto userDto)
{
try
{
var identity = _mapper.Map< AppUser>(userDto);
var result = await _repository.CreateUser(identity,userDto);
if(result!= null)
返回Ok(结果);
else
返回BadRequest(账户alredy存在。);
}
catch(例外)
{

}
返回BadRequest();
}







摘要:

我正在尝试通过CreateUser方法创建用户,传递给它RegisterUserDto,然后在POST请求响应体中返回创建的用户对象。

操作执行并在DB中创建用户,但Postman返回这:图片



我的尝试:



我已确保Postman的SSL证书验证已关闭。

解决方案

在序列化程序选项中配置此选项解决了这个问题。

 services.AddMvc(options => ....)。AddJsonOptions(opt => opt.SerializerSettings.ReferenceLoopHandling = Newtonsoft .Json.ReferenceLoopHandling.Ignore); 


Code goes like this:

public async Task<AppUser> CreateUser(AppUser user, RegisterUserDto dto)
        {
            try
            {
                var result = await _userManager.CreateAsync(user, dto.Password);
                if (result.Succeeded)
                {
                    await _userManager.AddToRoleAsync(user, "Member");
                    await _context.SaveChangesAsync();
                    return user;
                }
                return null;
                
            }
            catch (Exception ex)
            {
                _logger.LogError("Error at AuthRepository at CreateUser, ex:" + ex.StackTrace, false);
            }
            return null;
        }




[HttpPost]
  [Route("createuser")]
  public async Task<IActionResult> CreateUserAcc([FromBody] RegisterUserDto userDto)
  {
      try
      {
          var identity = _mapper.Map<AppUser>(userDto);
          var result= await _repository.CreateUser(identity, userDto);
          if (result!=null)
              return Ok(result);
          else
              return BadRequest("Account alredy exists.");
      }
      catch (Exception)
      {

      }
      return BadRequest();
  }




Summary:
I'm trying to create user via CreateUser method, passing to it RegisterUserDto, and then in the POST request response body to return created user object.
Action executes and user is created in DB, but Postman returns this: Image

What I have tried:

I've made sure that Postman's SSL certificate verification is turned OFF.

解决方案

Configuring this in serializer options solved the problem.

services.AddMvc(options=>....).AddJsonOptions(opt=> opt.SerializerSettings.ReferenceLoopHandling=Newtonsoft.Json.ReferenceLoopHandling.Ignore);


这篇关于如何在POST请求响应正文中返回复杂对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆