How to expose a validation API in a RESTful way?
http, rest
Solution
The type of thing you've described is certainly more RPC-style in its' semantics, but that doesn't mean you can't reach your goals in a RESTful manner.
There's no `VALIDATE` HTTP verb, so how much value can you get from structuring an entire API around that? Your story centers around providing users with the ability to determine whether a given user name is available - that sounds to me like a simple resource retrieval check - `GET: /profile/username/...` - if the result is a 404, the name is available.
What this highlights is that that client-side validation is just that - client side. It's a UI concern to ensure that data is validated on the client before being sent to the server. A RESTful service doesn't give a whit whether or not a client has performed validation; it will simply accept or reject a request based on its' own validation logic.
REST isn't an all-encompassing paradigm, it only describes a way of structuring client-server communications.
Problem
I'm generally a fan of RESTful API design, but I'm unsure of how to apply REST principles for a validation API. Suppose we have an API for querying and updating a user's profile info (name, email, username, password). We've deemed that a useful piece of functionality to expose would be validation, e.g. query whether a given username is valid and available. What are the resource(s) in this case? What HTTP status codes and/or headers should be used? As a start, I have `GET /profile/validate` which takes query string params and returns `204` or `400` if valid or invalid. But `validate` is clearly a verb and not a noun.