Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to expose a validation API in a RESTful way?

Tags:

rest

http

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.

like image 302
Aseem Kishore Avatar asked Jul 26 '12 19:07

Aseem Kishore


People also ask

How do I validate a REST API response?

The first step in testing is to make sure that you can successfully connect to the REST API using the configured type of authentication. From the API documentation, find a request URL to test that provides a response. Using a GET to test the authentication is often the simplest way to make sure you can connect.

What does it mean to expose a REST API?

1/ What is exposing an API? Basically, you are offering an access to your business logic through an Interface (the API), with full control on what you want to show or not.


1 Answers

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.

like image 161
Josh E Avatar answered Sep 30 '22 10:09

Josh E