I have the following URL: domain.com/user/3/edit.
I would like to know if it is recommended that the user ID appears in the URL, or would a URL be better, such as: domain.com/user/edit.
If the last option is better, how could it be done? modifying Route Route::get to Route::post?
If what you want is to hide the id, you can use a slug for each user, there is a "slugify" package that does this job very well and makes the urls look better, apart from hiding how many id you can have in your table from the database.
If it is for security, that you use GET or POST will not have much influence.
In this case, the most appropriate verb is still GET, since you are not making any modifications to the database, only obtaining data from it.
Finally, you should take advantage of the model binding that Laravel offers directly on the route.
If you want to change the database column that is used for the Model Binding , say for example for a token or some other unique field, as of Laravel 5.2 , you can do so by adding this to your model:
Regarding using POST instead of GET , it is anti standard ( RESTful ), GET is only to get the resource(s), and POST to create it(s). I recommend you to see the good practices:
http://www.vinaysahni.com/best-practices-for-a-pragmatic-restful-api
If you want your URL to hide or mask the id, I recommend using Fakeids.
It will cause the ids to be masked in your URL, for example, instead of showing you your url: -domain.com/user/3/edit.
it will show you something like this: -domain.com/user/192849273/edit.
Your URL is much cleaner than using Encrypt and everything is done automatically.
documentation: https://github.com/Propaganistas/Laravel-FakeId