ckarakoc
ckarakoc

Reputation: 51

CreatedAtAction for a Post request of register

I have an AuthController class with a register Post request:

public class AuthController(UserManager<User> userManager, IMapper mapper) : BaseApiController
{
    [HttpPost("register")] // api/auth/register
    public async Task<ActionResult> Register(RegisterDto registerDto)
    {
        if (await UserExist(registerDto.UserName))
        {
            return BadRequest("Username already exist");
        }

        var user = mapper.Map<User>(registerDto);

        var result = await userManager.CreateAsync(user, registerDto.Password);

        if (!result.Succeeded)
        {
            return BadRequest(result.Errors);
        }
        
        return CreatedAtAction(nameof(UsersController.GetUserById), new { id = user.Id }, user);
    }
}

I also have a UsersController with the following method:

public class UsersController(IUnitOfWork unitOfWork) : BaseApiController
{
    [HttpGet("{userId:int}")] //api/user/:id
    public async Task<ActionResult<UserDto>> GetUserById(int userId)
    {
        var user = await unitOfWork.UserRepository.GetUserByIdAsync(userId);
        if (user == null) return NotFound("User not found");
        return Ok(user);
    }
}

How exactly am I supposed to create the Created Response for the register method.

Upvotes: 1

Views: 25

Answers (1)

ckarakoc
ckarakoc

Reputation: 51

The fix:

CreatedAtAction(nameof(UsersController.GetUserById), "Users", new {userId = user.Id}, user);

Upvotes: 0

Related Questions