find-or-create idiom in REST API design?
say we have a 'user' resource with unique constraint on 'name'. how would you design a REST API to handle a find-or-create (by name) use case? I see the following options: option 1: multiple requests client: POST /user {"name":"bob"} server: HTTP 409 //or something else client: GET /user?name=bob server: HTTP 200 //returns existing user option 2: one request, two response codes client: POST /user {"name":"bob"} server: HTTP 200 //returns existing user (in case user is actually created, return HTTP 201 instead) option 3: request errs but response data contains conflicting entity client: POST