You can do Route model binding like Route::get('api/users/{user}', function (User $user) { … } - but not only by ID field. If you want {user} to be a username field, put this in the model:
public function getRouteKeyName() {    return 'username';}