JSON-RPC рдФрд░ рдЕрдиреНрдп RPC- рдЬреИрд╕реЗ API рдореЗрдВ рдЕрдХреНрд╕рд░ рдХреЗрд╡рд▓ рдПрдХ рд╣реА URI рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рд╢рд░реАрд░ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде рд╣реЛрддрд╛ рд╣реИред рдЗрди рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдкрд░ рдХрдИ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдЬреИрд╕реЗ рдХрд┐ рджреЛрдиреЛрдВ рд╕рдВрдкрд╛рджрдХ рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдВ рдирд╣реАрдВ рджреЗрдВрдЧреЗ рдФрд░ рдПрдкреАрдЖрдИ рдХрдВрд╕реЛрд▓ рдЙрдЪрд┐рдд рдЕрддрд┐рднрд╛рд░рд┐рдд рдкрд░рд┐рдгрд╛рдо рд▓реМрдЯрд╛рдПрдЧрд╛ред
apiary.io рдкрд░ рдЬрд╛ рд░рд╣рд╛ рд╣реИред
@rodriguise рдореБрдЭреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХрд╣рд╛рдВ рдорд┐рд▓ рд╕рдХрддреА рд╣реИ? рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рд╡рд┐рдЪрд╛рд░ рд╣реИ, рдЖрд░рдкреАрд╕реА рдЬреИрд╕реА рдПрдкреАрдЖрдИ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рдЕрдЪреНрдЫреА рд╕реБрд╡рд┐рдзрд╛ рд╣реЛрдЧреАред
@rodriguise рдореБрдЭреЗ рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдореЗрдВ рднреА рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ, рдХреНрдпрд╛ рдЖрдк рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрд╣рд╛рдВ рд╕реЗ рд╕реАрдЦ рд╕рдХрддрд╛ рд╣реВрдВ?
@adammbalogh @SvyatoslavVasiliev рдХреНрдпрд╛ рдЖрдк рд▓реЛрдЧ рдЕрдкрдиреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХрд╛ рдереЛрдбрд╝рд╛ рдФрд░ рд╡рд░реНрдгрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?
@pksunkara рдпрдХреАрди рд╣реИред
рдореЗрд░реЗ рдкрд╛рд╕ JSON-RPC 2.0 рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ API рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
рдкреЛрд╕реНрдЯ http://somehost.com/rpc_api
{
"jsonrpc": "2.0",
"id": 1,
"method": "entity.get",
"params": {
"filter": {
"filters": [
{
"field": "name",
"operator": "eq",
"value": "Bob"
},
{
"field": "age",
"operator": "eq",
"value": 25
}
],
"condition": "and"
}
}
}
рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдкреАрдЖрдИ рдореЗрдВ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд╕рдореВрд╣ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рдпреВрдЖрд░рдПрд▓ рд╣реИ, рдЬрд╣рд╛рдВ "рд╡рд┐рдзрд┐" рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдирд╛рдо рд╢рд░реАрд░ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИрдВред
рдкрде-рдХреЗрдВрджреНрд░рд┐рдд рднрд╛рд╖рд╛ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдХрд╛рд░рдг рд╡рд░реНрддрдорд╛рди рдмреНрд▓реВрдкреНрд░рд┐рдВрдЯ рдкреНрд░рд╛рдкреНрддрд┐ рдРрд╕реЗ рдПрдкреАрдЖрдИ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддреА рд╣реИред
рд╣рд╛рдп @pksunkara , рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рдЦрдмрд░ рд╣реИ?
рдореИрдВрдиреЗ рдПрдкрд┐рдпрд░реА рдХреЗ рдмрдЬрд╛рдп рдЕрдиреНрдп рд░реЗрдВрдбрд░рд┐рдВрдЧ рдЯреВрд▓реНрд╕ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдЧреНрд▓рд┐рдпреЛ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ, рдФрд░ рдЙрдиреНрд╣реЛрдВрдиреЗ рдПрдкрд┐рдпрд░реА рдХреЗ рд╡рд┐рдкрд░реАрдд рдкреНрд░рд▓реЗрдЦрди рдХрд╛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд┐рдпрд╛ред рд▓реЗрдХрд┐рди рд╡реЗ рдЙрдкрдХрд░рдг рдХреБрдЫ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдЬреИрд╕реЗ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рдХреЛ рдЕрд▓рдЧ рдЕрдиреБрднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред
рдпрджрд┐ рдЖрдк рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред
рдЕрд░реЗ @SvyatoslavVasiliev рддреЛ рдЕрдЧрд░ рдореИрдВ рдЗрд╕реЗ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдкрдврд╝рддрд╛ рд╣реВрдВ рддреЛ JSON RPC рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд░реНрдерди https://github.com/apiaryio/api-blueprint/issues/289 рдХреЗ рдЕрдВрддрд░реНрдЧрдд рдЖ рд░рд╣рд╛ рд╣реИ, рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдЕрднреА рднреА HTTP рд╣реИред
рдпреВрдЖрд░рдЖрдИ рдФрд░ рдПрдЪрдЯреАрдЯреАрдкреА рд╡рд┐рдзрд┐рдпреЛрдВ рд╕реЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдФрд░ рдХреНрд░рд┐рдпрд╛ рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреЛ рдХрдо рдХрд░рдиреЗ рд╕реЗ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рднреА рдорджрдж рдорд┐рд▓рдиреА рдЪрд╛рд╣рд┐рдПред
рдХреНрдпрд╛ рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ? рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдХреГрдкрдпрд╛ #289 рджреЗрдЦреЗрдВ
рд╣рд╛рдп @zdne ,
рдореИрдВрдиреЗ #289 рдХреЛ рд╕рдордЭрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕рдордЭ рдирд╣реАрдВ рдкрд╛ рд░рд╣рд╛ рд╣реВрдВред
рдореЗрд░рд╛ рдПрдкреАрдЖрдИ рдкрд░рд┐рд╡рд╣рди рдХреЗ рд░реВрдк рдореЗрдВ JSON рдмреЙрдбреА рдХреЗ рд╕рд╛рде HTTP рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ URL рд╣реИ рдФрд░ рдХреЗрд╡рд▓ HTTP POST рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рд╢рд░реАрд░ рдореЗрдВ "рд╡рд┐рдзрд┐" рдкрд░рдо рдореЗрдВ рдирд┐рд╣рд┐рдд рд╕рдВрд╕рд╛рдзрди рдФрд░ рд╡рд┐рдзрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рднреА рдЬрд╛рдирдХрд╛рд░реАред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрдХрд╛рдИ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ:
{
"jsonrpc": "2.0",
"id": 1,
"method": "entity.get",
"params": {
"filter": {
"filters": [
{
"field": "name",
"operator": "eq",
"value": "Bob"
},
{
"field": "age",
"operator": "eq",
"value": 25
}
],
"condition": "and"
}
}
}
рдЗрдХрд╛рдИ рд╣рдЯрд╛рдПрдВ:
{
"jsonrpc": "2.0",
"id": 1,
"method": "entity.delete",
"params": {
"id": "123"
}
}
рджреЛрдиреЛрдВ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ HTTP POST рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ http://myservice.com/rpcapi
рдЕрдм рддрдХ рдореБрдЭреЗ JSON-RPC API рдХрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬреАрдХрд░рдг рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЖрдзреБрдирд┐рдХ рдФрд░ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рддрд░реАрдХрд╛ рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИ (рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдореИрдВ рдкрд░реАрдХреНрд╖рдг рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ)ред рдореЗрд░реА рдЖрд╢рд╛ рдПрдкреАрдЖрдИ рдмреНрд▓реВрдкреНрд░рд┐рдВрдЯ рдереА рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИред рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЛ рдЗрд╕рдХреЗ рдПрдкреАрдЖрдИ рдмреНрд▓реВрдкреНрд░рд┐рдВрдЯ рдХреА рднрд╡рд┐рд╖реНрдп рдХреА рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рд╣реИ рдпрд╛ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдПрдХ рдЕрд▓рдЧ рд╕рдВрд░рдЪрдирд╛/рдЙрдкрдХрд░рдг рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕реБрдЭрд╛рд╡ рд╣реИ?
@Dynom рдореИрдВ рдпреБрдЧрд▓ рд╕рд▓рд╛рд╣ рджреЗ рд╕рдХрддрд╛ рд╣реВрдВред
рдЖрдк рдПрдкреАрдЖрдИ рдмреНрд▓реВрдкреНрд░рд┐рдВрдЯ рдХреЗ рд▓рд┐рдП рдПрдЧреНрд▓рд┐рдпреЛ рд░реЗрдВрдбрд░ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рд╡рд┐рд╢реЗрд╖рддрд╛ рдЕрдиреБрднрд╛рдЧ рдкреНрд░рд╕реНрддреБрдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред
рдПрдХ рдЕрдиреНрдп рдЙрдкрдХрд░рдг рдПрдкреАрдЖрдИ рдбреЙрдХ рд╣реИ , рдореИрдВ рд╡рд░реНрддрдорд╛рди рдХреНрд╖рдг рдореЗрдВ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдпрд╣ рдЙрдкрдпреБрдХреНрдд рд▓рдЧрддрд╛ рд╣реИред
рдзрдиреНрдпрд╡рд╛рдж @SvyatoslavVasiliev рдореИрдВ рдЗрдирд▓рд╛рдЗрди рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдФрд░ рдПрдкреАрдЖрдИ рдбреЙрдХреНрдЯрд░ рд╡рд┐рдЬреНрдЮрд╛рдкрди рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд░реАрд╕реНрдЯрдлреБрд▓ рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдо рд▓рдВрдмреЗ рд╕рдордп рдореЗрдВ рдЗрд╕рд╕реЗ рдмрд╣реБрдд рдЙрдореНрдореАрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред