If you are trying to return different translations or localized versions of the same books to the server (in other words, the same resource from the RESTful point of view), use Accept-Language because the resource is the same, but the presentation is different from the client's needs.
However, if you are trying to return completely different books based on the client locale (say, returning books written in French, if you know that the user is in France), then the URIs should be different since different resources will be returned. At this stage, you are most likely to talk about the query request. For what it's worth, the /books/en approach sounds reasonable. Another approach would be to add a locale or a language as a resource parameter in GET like /books?lang=en .
source share