A consumer needs to lookup a single user by their github name (jordanbyron). That consumer doesn't know the user's ID. There is a possibility to also search by email and twitter.
"/users.json?github=jordanbyron"
=> [{github: "jordanbyron", id: 1}]
When there are no results an empty array is returned
"/users.json?github=noexist"
=> []
When there are partial matches, multiple results can be displayed
"/users.json?github=jo"
=> [{github: "jordanbyron", id: 1}, {github: "joeuser", id: 1}]
- Is there a way to keep a RESTful interface but also retrieve just one record per request (Without knowing the user's ID)
- Should the filtering of records only return exact matches, or partial matches as well? Or have the ability to do one or the other?
"/users.json?search=jo"
=> [{github: "jordanbyron", id: 1}, {email: "userjoe", id: 1}, {twitter: "iamjoelman", id: 1}]
If there are no fields which match the search
params
"/users.json?search=zzzzzzzz"
=> []
When github
, twitter
, or email
params are passed only one result is returned
"/users.json?github=jordanbyron"
=> {github: "jordanbyron", id: 1}
When one of the above params are used and there are no matches, nil is returned
"/users.json?github=noexists"
=> nil
"/users.json?search=jo"
=> [{github: "jordanbyron", id: 1}, {email: "userjoe", id: 1}, {twitter: "iamjoelman", id: 1}]
If there are no fields which match the search
params
"/users.json?search=zzzzzzzz"
=> []
When github
, twitter
, or email
params are passed the result is still in an array
"/users.json?github=jordanbyron"
=> [{github: "jordanbyron", id: 1}]
When one of the above params are used and there are no matches, an empty array is returned
"/users.json?github=noexists"
=> []
module UniversityWeb::User
def self.find_by_github(github_account_name)
result = service("/users.json?github=#{github_account_name}") # Makes a request to the server's API
result.first # result == [ { github: "jordanbyron", id: 1 } ]
end
end
UniversityWeb::User.find_by_github("jordanbyron")
=> { github: "jordanbyron", id: 1 }
@semmons99 in rails <= 2
Person.find(:first)
does return a single person object (or nil) andPerson.find(:all)
returns an array.@samnang cool. I was getting a bit hung up on making sure the service endpoint's API also provided a nice end user interface. But I've come to realize that is just too difficult and creating a wrapper library will get me the best of both worlds. Thanks for your feedback!