Getting back to work on my side project I got into finishing the user registration trough the API. Following the JSON API spec, it requires returning a 201 created and the resource id when creating a database entry.

For somebody used with ASP this might seem trivial but it’s not that obvious when creating a new user.

Let’s take a simple example:

1
2
3
4
5
6
var user = new ApplicationUser { UserName = model.Email, Email = model.Email };
var result = await _userManager.CreateAsync(user, model.Password);
if (result.Succeeded)
{
    // do stuff here
}

Usually you would think that result would somehow contain the user’s id but that’s not the case. However, if your operation succeeded, the user variable will contain the newly created database properties.

So you can do something like:

1
2
3
return StatusCode(StatusCodes.Status201Created, new {
    data = new { id = user.Id }
});