Best Practices When Inserting Data (opinion question)
YES

check data at the client

Check the data on the client side (eg in JavaScript) for the stupid simple checks. eg NOT NULL, attribute &lt; someValue, strings are in the correct format (regex), etc.  Feel free to make some REST calls for the validation.

Also, use good GUI designs.  The use of Drop Downs help limit what PK values the end users can use.

check data at the middle tier

Check the data at the middle tier because:  Not everyone uses web browsers.  Not everyone will send "clean data".
https://xkcd.com/327/

enforce data rules inside the DB

On of the primary purpose of a database is to store valid data.

Always enforce constraints within the database.  There could be more than one application accessing the database.  You want those rules to apply to all applications.

For an application assertion, use a function/procedure.