рдПрдкреАрдЖрдИ рдирд┐рд░реНрдорд╛рдг

рдХреБрдЫ рд╣рдлрд╝реНрддреЗ рдкрд╣рд▓реЗ, рд╣рдордиреЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдк рд╕реЗ Gauges API рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдерд╛ред рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж Gauges рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдПрдкреАрдЖрдИ рд▓рд┐рдЦрддреЗ рд╕рдордп рдХрд╛рдлреА рдХрд╛рдо рдерд╛ред рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рд╡рд░рдг рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред

1. рдПрдкреАрдЖрдИ рдирд┐рд░реНрдорд╛рдг рдХреЗ рджреМрд░рд╛рди рджрд╕реНрддрд╛рд╡реЗрдЬ рд▓рд┐рдЦреЗрдВ

рдПрдкреАрдЖрдИ рд▓рдЧрднрдЧ рддреИрдпрд╛рд░ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рд╣рдордиреЗ рджрд╕реНрддрд╛рд╡реЗрдЬ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдореЗрдВ рдЧрд▓рддреА рдХреАред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░рд▓реЗрдЦрди рдмреЗрдХрд╛рд░ рд╣реИред рдмрд╛рдж рдореЗрдВ рдЗрд╕ рджрд┐рдирдЪрд░реНрдпрд╛ рдХреЛ рдЫреЛрдбрд╝рдХрд░, рдЬрдм рдЖрдк рдПрдкреАрдЖрдИ рдЬрд╛рд░реА рдХрд░рдиреЗ рдореЗрдВ рдкреНрд░рд╕рдиреНрди рд╣реЛрдВрдЧреЗ, рддреЛ рдХрд╛рдо рджреЛрдЧреБрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡реЗ рдереЗ рдЬреЛ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдЧрдП рдереЗред

2. рд╕реНрдерд┐рд░ рд░рд╣реЗрдВ

рд╣рдорд╛рд░реЗ рдПрдкреАрдЖрдИ рджрд╕реНрддрд╛рд╡реЗрдЬ рд▓рд┐рдЦрддреЗ рд╕рдордп, рд╣рдордиреЗ рдХрдИ рдЕрд╕рдВрдЧрдд рдмрд┐рдВрджреБрдУрдВ рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреБрдЫ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рд╣рдордиреЗ рд╣реИрд╢ рд▓реМрдЯрд╛рдпрд╛, рдФрд░ рдЕрдиреНрдп рдореЗрдВ - рдПрдХ рд╕рд░рдгреАред рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕рдордЭрддреЗ рд╣реБрдП, рд╣рдордиреЗ рдХреБрдЫ рдирд┐рдпрдо рдмрдирд╛рдиреЗ рд╢реБрд░реВ рдХрд┐рдПред

рд╕рд░рдгреА / рд╣реИрд╢ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рд╣рдореЗрд╢рд╛ рдЙрддреНрддрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╣реИрд╢ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдЪреБрдирд╛ред рдпрд╣ рд╕рдмрд╕реЗ рд▓рдЪреАрд▓рд╛ рд╕рдорд╛рдзрд╛рди рд╣реИ, рд╣рдорд╛рд░реЗ рднрд╡рд┐рд╖реНрдп рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдирд╛ред рд╣рдо рдЕрдкрдиреА рд╕реЗрд╡рд╛ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рдмрджрд▓рдиреЗ рдпрд╛ рдПрдкреАрдЖрдИ рдХреЗ рдПрдХ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛, рдирдИ рдЪрд╛рдмрд┐рдпрд╛рдБ рд╢реБрд░реВ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдереЗред

рд╣реИрд╢ рдХреЗ рд╕рд╛рде рд╕рд░рдгрд┐рдпреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЪрд╛рдмрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд╛рдорд╕реНрдерд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдордиреЗ рджреЗрдЦрд╛ рдХрд┐ рд╣рд░ рдЪреАрдЬ рдХрд╛ рдЕрдкрдирд╛ рдирд╛рдо рд╕реНрдерд╛рди рдирд╣реАрдВ рдерд╛ред рдФрд░ рдлрд┐рд░, рд╣рдо рдПрдХ рдирд┐рдпрдо рд▓реЗрдХрд░ рдЖрдПред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╕рднреА рд╢реАрд░реНрд╖-рд╕реНрддрд░реАрдп рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдПрдХ рдирд╛рдорд╕реНрдерд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдЗрди рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдпрд╛ рдХрдИ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд╕реЗрдЯ рдХреЗ рдмрдЪреНрдЪреЛрдВ рдХреЗ рд▓рд┐рдП рдирд╛рдорд╕реНрдерд╛рди рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИрдВред
{users:[{user:{...}}, {user:{...}}]} //  {users:[{...}, {...}]} //  {username: 'jnunemaker'} //  {user: {username:'jnunemaker'}} //  

рдЦреИрд░, рдЖрдкрдХреЛ рдмрд╛рдд рд╕рдордЭ рдореЗрдВ рдЖ рдЧрдИред рд╕рдВрдЧрддрд┐ рдЬрд░реВрд░реА рд╣реИред рдПрдХ рдкреНрд░рд╛рд░реВрдк рдХрд╛ рд╣рдореЗрд╢рд╛ рдкрд╛рд▓рди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред


3. URL рдкреНрд░рджрд╛рди рдХрд░реЗрдВ

рдореЗрд░реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдУрдкрди рд╕реЛрд░реНрд╕ рдХрд╛рдо рд╡рд┐рднрд┐рдиреНрди рдПрдкреАрдЖрдИ рд▓рдкреЗрдЯрддреЗ рд░рд╣реЗ рд╣реИрдВред рдФрд░ рдПрдХ рдмрд╛рдд рдиреЗ рдореБрдЭреЗ рдмрд╣реБрдд рдкрд░реЗрд╢рд╛рди рдХрд┐рдпрд╛, рдпрд╣ рдЙрд░реЛрдЬ рдкреИрджрд╛ рдХрд░ рд░рд╣рд╛ рдерд╛ред рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрд╕рд╛рдзрди рдХреЛ рдЙрди URL рдХреЛ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Gauges рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдкрд╛рд╕ рдХрдИ URL рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдХреБрдЫ рдбреЗрдЯрд╛ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
 { "user": { "name": "John Doe", "urls": { "self": "https://secure.gaug.es/me", "gauges": "https://secure.gaug.es/gauges", "clients": "https://secure.gaug.es/clients" }, "id": "4e206261e5947c1d38000001", "last_name": "Doe", "email": "john@doe.com", "first_name": "John" } } 

рдкрд┐рдЫрд▓рд╛ JSON / me рд╕рдВрд╕рд╛рдзрди рд╕реЗ рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣реИред рдпрд╣ рдкреНрд░рдорд╛рдгрд┐рдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рд╕рд╛рде рд╣реА рд╕реНрд╡рдпрдВ (рд╕реНрд╡рдпрдВ) рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП URL, рд╕рднреА рдЖрдБрдХрдбрд╝реЗ (/ рдЧреЗрдЬ) рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╕рднреА API рдХреНрд▓рд╛рдЗрдВрдЯ (/ рдХреНрд▓рд╛рдЗрдВрдЯ) рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рдорд╛рди рд▓реАрдЬрд┐рдП рдЖрдкрдХрд╛ рдЕрдЧрд▓рд╛ рдЕрдиреБрд░реЛрдз / рдЧреЗрдЬ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдЧреЗрдЬ (рдЖрдБрдХрдбрд╝реЗ) рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдФрд░ рдкрддреЗ рд▓реМрдЯрд╛рддрд╛ рд╣реИред
 { "gauges": [ { // various attributes "urls": { "self":"https://secure.gaug.es/gauges/4ea97a8be5947ccda1000001", "referrers":"https://secure.gaug.es/gauges/4ea97a8be5947ccda1000001/referrers", "technology":"https://secure.gaug.es/gauges/4ea97a8be5947ccda1000001/technology", // ... etc }, } ] } 

рд╣рдореЗрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рд╕рд╛рдмрд┐рдд рд╣реЛрдЧрд╛ред рдФрд░ рд╣рдо рднрд╡рд┐рд╖реНрдп рдореЗрдВ рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред

4. рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ

рдФрд░ рдЕрдВрдд рдореЗрдВ, рдирд┐рдпрдВрддреНрд░рдХ рд╕реЗ рдпрд╛ рдкреНрд░рд╛рдкреНрдд / рдкреЛрд╕реНрдЯ / sinatra рдмреНрд▓реЙрдХ рд╕реЗ to_json рдФрд░ рдЙрд╕рдХреЗ рджреЛрд╕реНрддреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрднреА рди рдХрд░реЗрдВред рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ to_json рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж: рд╡рд┐рдзрд┐рдпреЛрдВ,: рдХреЗ рдЕрд▓рд╛рд╡рд╛,: рдХреЗрд╡рд▓, рдпрд╛ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд╕рд╛рде, рдЖрдк рдпрд╣ рд╕рдм рдПрдХ рдЕрд▓рдЧ рд╡рд░реНрдЧ рдореЗрдВ рд▓реЗ рдЬрд╛рдирд╛ рдЪрд╛рд╣ рд╕рдХрддреЗ рд╣реИрдВред

Gauges рдХреЗ рд▓рд┐рдП, рд╣рдо рдЗрди рд╡рд░реНрдЧреЛрдВ рдХреЛ рдкреНрд░рд╕реНрддреБрддрдХрд░реНрддрд╛ рдХрд╣рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдБ UserPresenter рдХрд╛ рд╕рд░рд▓реАрдХреГрдд рд╕рдВрд╕реНрдХрд░рдг рд╣реИред
 class UserPresenter def initialize(user) @user = user end def as_json(*) { 'id' => @user.id, 'email' => @user.email, 'name' => @user.name, 'first_name' => @user.first_name, 'last_name' => @user.last_name, 'urls' => { 'self' => "#{Gauges.api_url}/me", 'gauges' => "#{Gauges.api_url}/gauges", 'clients' => "#{Gauges.api_url}/clients", } } end end 

рдЪрд┐рдВрддрд╛ рдХреА рдХреЛрдИ рдмрд╛рдд рдирд╣реАрдВред рдРрдк / рдкреНрд░реЗрдЬреЗрдВрдЯрд░реНрд╕ рдкрд░ рд╕реНрдерд┐рдд рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╣реИрдХ рдХреНрд▓рд╛рд╕ред рдпрд╣рд╛рдБ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рд╕рд┐рдирд╛рддреНрд░рд╛ рдРрдк рдореЗрдВ рдорд╛рд░реНрдЧ рдХреИрд╕реЗ / рдореЗрд░реЗ рд▓рд┐рдП рджрд┐рдЦрддрд╛ рд╣реИред
 get('/me') do content_type(:json) sign_in_required {:user => UserPresenter.new(current_user)}.to_json end 

рдпрд╣ рдПрдХ рд╕рд░рд▓ рдкреНрд░рд╕реНрддреБрддрд┐ рдкрд░рдд рд╣реИ рдЬреЛ рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЙрддреНрддрд░реЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИред рдФрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдг рднреА рд╣реИ, рдЬреЛ рдкреБрд╖реНрдЯрд┐ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЫреЛрдЯреА рдкрд░рдд рддрд╛рдЬреА рд╣рд╡рд╛ рдХреА рд╕рд╛рдВрд╕ рд╣реИред

рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдЙрдкрд░реЛрдХреНрдд рдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдЪреМрдВрдХрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдпрд╛ рдЕрддрд┐-рдкреНрд░реЗрд░рдгрд╛рджрд╛рдпрдХ рдирд╣реАрдВ рдерд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд▓реЗрдЦ рдЖрдкрдХреЗ рдЕрдЧрд▓реЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕рдордп рдмрдЪрд╛рдПрдЧрд╛ред

Source: https://habr.com/ru/post/In133821/


All Articles