JSON-RPC 2.0 рдФрд░ PHP

рдпрджрд┐ рдЖрдк рдПрдХ рдбреЗрд╡рд▓рдкрд░ рд╣реИрдВ, рдФрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдкреАрдПрдЪрдкреА рдореЗрдВ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИ, рдФрд░ рдЙрд╕реЗ рдЕрдВрддрддрдГ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдПрдкреАрдЖрдИ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдпрд╣ рд▓реЗрдЦ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЖрдкрдХреЗ рд▓рд┐рдП рд╣реИ;)ред

JSON-RPC v1.0 2005 рдореЗрдВ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛, 5 рд╕рд╛рд▓ рдмрд╛рдж рджреВрд╕рд░рд╛ рд╕рдВрд╕реНрдХрд░рдг рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ ред рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдореЛрдмрд╛рдЗрд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдпреБрдЧ рдореЗрдВ, рдХрдИ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЕрднреА рднреА рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рд╕рд░рд▓ рдорд╛рдирдХ рдХреЗ рдмрдЬрд╛рдп рдЕрдкрдиреА рдмрд╛рдЗрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

JSON-RPC рдФрд░ 2.0 рднреА рдХреНрдпреЛрдВ?


рдореИрдВ рдкреНрд░рдореБрдЦ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реВрдВрдЧрд╛:

рд╕рдВрд╕реНрдХрд░рдг 1.0 рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, 2.0 рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╡рд╛рдЪрд╛рд░реЛрдВ рдХреЛ рдкреИрд░рд╛рдореАрдЯрд░ рдФрд░ рдХреЙрд▓ рдХрддрд╛рд░ рдирд╛рдо рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЕрдиреБрд░реЛрдз / рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
--> {"jsonrpc": "2.0", "method": "subtract", "params": {"subtrahend": 23, "minuend": 42}, "id": 3} <-- {"jsonrpc": "2.0", "result": 19, "id": 3} --> {"jsonrpc": "2.0", "method": "subtract", "params": [42, 23], "id": 1} <-- {"jsonrpc": "2.0", "result": 19, "id": 1} --> [ {"jsonrpc": "2.0", "method": "sum", "params": [1,2,4], "id": "1"}, {"jsonrpc": "2.0", "method": "foobar", "id": "2"} ] <-- [ {"jsonrpc": "2.0", "result": 7, "id": "1"}, {"jsonrpc": "2.0", "error": {"code": -32601, "message": "Method not found."}, "id": "2"} ] 


рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреА рдЗрд╕ рдЬрдЯрд┐рд▓ "рд░рдЪрдирд╛рддреНрдордХ" рджреБрдирд┐рдпрд╛ рдореЗрдВ, рдпрд╣ рд╕рд╡рд╛рд▓ рд╣рдореЗрд╢рд╛ рдЙрдарддрд╛ рд╣реИ: рдХреБрдЫ рддреИрдпрд╛рд░ рдХрд░реЗрдВ рдпрд╛ рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдХреБрдЫ рд▓рд┐рдЦреЗрдВ?

рдПрдХрджрдо рд╕рд╣реА рджреБрдирд┐рдпрд╛ред рд╣рдореЗрдВ рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдП?


рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рд╣рдо рдЙрд╕ рдЯреВрд▓ рдХреЗ рдорд╛рдкрджрдВрдб рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рдЖрдк рдЦреЛрдЬрдирд╛ / рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ:

рдПрдХ рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрддред

рд╕рд┐рджреНрдзрд╛рдВрдд рдХреА рдмрд┐рдЯ


рдХреНрдпреЛрдВрдХрд┐ JSON-RPC рдПрдХ рдХрд╛рдлреА рдпреБрд╡рд╛ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╣реИ, рдлрд┐рд░ рднреА рдЗрд╕рдореЗрдВ рдХреБрдЫ рдХреНрд╖рдг рд╣реИрдВ рдЬреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдиреБрдореЛрджрд┐рдд рдирд╣реАрдВ рд╣реИрдВред рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ Dojo рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕реЗрд╡рд╛ рдорд╛рдирдЪрд┐рддреНрд░рдг рд╡рд┐рд╡рд░рдг рд╣реИ ред рдПрд╕рдПрдордбреА рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдПрдХ рд╡реЗрдм рд╕реЗрд╡рд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдЕрдкрдиреЗ рддрд░реАрдХреЛрдВ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ, рддреИрдирд╛рдд рд░рд┐рдЯрд░реНрди рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддреА рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдмрд╣реБрдд рдХрдо рд╕рдорд╛рдзрд╛рди рдЗрд╕рдХреЗ рдХреНрд░рд┐рдпрд╛рдиреНрд╡рдпрди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Zend_Json_Server , inputEx рдврд╛рдВрдЪрд╛ ( рдкрд░реАрдХреНрд╖рдг рд░реВрдкреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг ) рдФрд░ рд╕реНрд╡рдпрдВ Dojo рд░реВрдкрд░реЗрдЦрд╛ ред

рдЖрдЗрдП рдореМрдЬреВрджрд╛ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреА рдЦреЛрдЬ рдкрд░ рдЬрд╛рдПрдВред

PHP рдХреЗ рд▓рд┐рдП рдореМрдЬреВрджрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди


рдореИрдВрдиреЗ рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рдкрд░ рдПрдХ рдЯреИрдмрд▓реЗрдЯ рд╕реЗ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреА рд╕реВрдЪреА рд▓реАред
php-JSON-RPCjsonrpc2phptivokaрдХрдирд┐рд╖реНрдаJSON-RPC-phpJSONRpc2Zend
Json
рд╕рд░реНрд╡рд░
zoServices
рд╕рд░реНрд╡рд░
рд╡рд┐рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рд╕рд╛рде рдЕрдиреБрдкрд╛рд▓рди-рдмреИрдЪ рдореЛрдб рдореЗрдВ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рд╕рдорд░реНрдердиред
+рдкрд░рдо рдирд╛рдо рдХрд╛ рдХреЛрдИ рд╡реИрдХрд▓реНрдкрд┐рдХ рдирд╣реАрдВ+++рдкрд░рдо рдирд╛рдо рдХрд╛ рдХреЛрдИ рд╡реИрдХрд▓реНрдкрд┐рдХ рдирд╣реАрдВ
рдлрд╛рдЗрд▓реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛-2> 7361> рел6
SMD рд╕рд░реНрдХрд┐рдЯ------+-
рдкрд░реАрдХреНрд╖рдг-+-+-++-
рдЖрдВрддрд░рд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди (1..5)-4
рдирд┐рд░реНрдпрд╛рдд рдХрд╛рд░реНрдпреЛрдВ рдХреА рдореИрдиреБрдЕрд▓ рдореИрдкрд┐рдВрдЧ
3. рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╕рд░рд▓ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди44. рдХрдард┐рди4. рдЕрдВрджрд░ рдЬрд╛рджреВ!4ред Zend3ред
рдЧреНрд░рд╛рд╣рдХ
рд╡рд┐рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рд╕рд╛рде рдЕрдиреБрдкрд╛рд▓рдирдХреЛрдИ рдмреИрдЪ рдФрд░ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдирд╣реАрдВ-+++рдХреЛрдИ рдмреИрдЪ рдирд╣реАрдВ-рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рдирд╣реАрдВ рд╣реИ
рдлрд╛рдЗрд▓реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛1-> 7421-6
рдкрд░реАрдХреНрд╖рдг---+-+--
рдЖрдВрддрд░рд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди (1..5)4-3. рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдХрджрдо444ред :)-3
рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкреАрдврд╝реА--------

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

рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ, рдХреЛрдИ "рдЖрджрд░реНрд╢" рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИ рдЬреЛ рд╣рдорд╛рд░реЗ рдЕрдиреБрд░реВрдк рд╣реЛ рдФрд░ рдЬрд┐рд╕реЗ рдмрд┐рдирд╛ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЕрдиреНрдп рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдмрд╣реБрдд рдмреЗрд╣рддрд░ рд╣реИрдВ :)
рдЕрдкреВрд░реНрдг рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреА рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рднрд╛рд╡рдирд╛ рд╣реИ; рдХреЛрдИ рднреА рд╕рдорд╛рдзрд╛рди рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЧрдП рдПрдкреАрдЖрдИ (рд╕рд░реНрд╡рд░, рдПрд╕рдПрдордбреА-рд╕реНрдХреАрдорд╛, рдХреНрд▓рд╛рдЗрдВрдЯ-рдкреАрдврд╝реА) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдкреВрд░рд╛ рдЪрдХреНрд░ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрди рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рднреА рдирд╣реАрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдЬреЛ рдкреАрдПрдЪрдкреА рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЬрд╛рд╡рд╛ рдпрд╛ рд╕реА # рдХрд╣рддреЗ рд╣реИрдВред рдЕрдзрд┐рдХрд╛рдВрд╢ рднрд╛рдЧ рдХреЗ рд▓рд┐рдП - PHP рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдиреБрд░реЛрдз / рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдпреЛрдЬрдирд╛ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рди рдХрд┐ рдЗрд╕рдХреЗ рд░рд╛рдЬреНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рд░реНрд╡рд░ рдпреЛрдЬрдирд╛ рдореЗрдВред рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдВрдХрд▓рд┐рдд рдирд┐рдЬреА рдкреБрд╕реНрддрдХрд╛рд▓рдп рдирд╣реАрдВ рд╣реИред

рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ "рдХреБрдЫ рддреИрдпрд╛рд░ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ" рдпрд╛ "рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рд▓рд┐рдЦреЗрдВ" рд╕реНрдкрд╖реНрдЯ рд╣реИред

рдИрдЬрд╝реА JSON-RPC 2.0


GitHub рдкрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ред рдкрд╣рд▓реЗ рдмрддрд╛рдИ рдЧрдИ рд╕рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ рд▓рд╛рдЧреВ рдХреА рдЧрдИ рд╣реИрдВ :)

рд╕рд░реНрд╡рд░

рджреЛ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рд╣реИрдВ: рдпрд╛ рддреЛ BaseJsonRpcServer рд╡рд░реНрдЧ рд╕реЗ рдЗрдирд╣реЗрд░рд┐рдЯ рдХрд░реЗрдВ, рдпрд╛ рдЗрд╕рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдПрдВ рдФрд░ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЧрдП рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдкрд╛рд╕ рдХрд░реЗрдВ:
 <?php include 'BaseJsonRpcServer.php'; include 'tests/lib/DateTimeRpcService.php'; //   $server = new DateTimeRpcService(); //  new BaseJsonRpcServer( new DateTimeService() ); $server->Execute(); 

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдордиреЗ DateTimeRpcService рд╡рд░реНрдЧ рдХреЗ рд╕рднреА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рддрд░реАрдХреЛрдВ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд┐рдпрд╛ред SMD рд╕реНрдХреАрдо smd GET рдкреИрд░рд╛рдореАрдЯрд░ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, ezyjsonrpc / example-server.php? Smd ) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред рдпреЛрдЬрдирд╛ рдмрдирд╛рддреЗ рд╕рдордп, phpDoc рдмреНрд▓реЙрдХреЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдХрд┐рд╕ рддрд░рд╣ рдХрд╛ рд╕рд░реНрдХрд┐рдЯ рд╣реИ ...
 {"transport":"POST","envelope":"JSON-RPC-2.0","SMDVersion":"2.0","contentType":"application\/json","target":"\/example-server.php","services":{"GetTime":{"parameters":[{"name":"timezone","optional":true,"type":"string","default":"UTC"},{"name":"format","optional":true,"type":"string","default":"c"}],"description":"Get Current Time","returns":{"type":"string"}},"GetTimeZones":{"parameters":[],"description":"Returns associative array containing dst, offset and the timezone name","returns":{"type":"array"}},"GetRelativeTime":{"parameters":[{"name":"text","optional":false,"type":"string","description":"a date\/time string\r"},{"name":"timezone","optional":true,"type":"string","default":"UTC"},{"name":"format","optional":true,"type":"string","default":"c"}],"description":"Get Relative time","returns":{"type":"string"}},"Implode":{"parameters":[{"name":"glue","optional":false,"type":"string"},{"name":"pieces","optional":true,"type":"array","default":["1","2","3"]}],"description":"Implode Function","returns":{"type":"string","description":"string"}}},"description":"Simple Date Time Service"} 



рдЧреНрд░рд╛рд╣рдХ

рдлрд┐рд░ рд╕реЗ рджреЛ рд╕рдВрднрд╛рд╡рд┐рдд рдЙрдкрдпреЛрдЧ рд╣реИрдВ: рдпрд╛ рддреЛ BaseJsonRpcClient рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдПрдВ рдФрд░ рдЗрд╕реЗ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рд╡реЗрдм рд╕реЗрд╡рд╛ рд▓рд┐рдВрдХ рдкрд╛рд╕ рдХрд░реЗрдВ, рдпрд╛ рдЬрдирд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
 <?php include 'BaseJsonRpcClient.php'; $client = new BaseJsonRpcClient( 'http://eazyjsonrpc/example-server.php' ); $result = $client->GetRelativeTime( 'yesterday' ); 


рдЬрдирдХ

рдПрд╕рдПрдордбреА рдпреЛрдЬрдирд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╣рдо рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд░реНрдЧ рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ DateTimeServiceClient.php )ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬрдирд░реЗрдЯрд░ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ:
 php JsonRpcClientGenerator.php http://eazyjsonrpc/example-server.php?smd DateTimeServiceClient 

рдХрдорд╛рдВрдб рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд╢реНрдпрдХ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ DateTimeServiceClient.php рдлрд╝рд╛рдЗрд▓ рд╣реЛрдЧрд╛ред

рдорд░рд╣рдо рдореЗрдВ рдЙрдбрд╝рдирд╛

JSON-RPC рдореЗрдВ рдХреЙрд▓рд┐рдВрдЧ рдХреНрд▓рд╛рд╕- > рдореЗрдердб () рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдирд╕реНрдкреЛрдХ рдирд┐рдпрдо рдХреНрд▓рд╛рд╕рдореИрдереЛрдб рдХреЛ рд╡рд┐рдзрд┐ рдХреЗ рдирд╛рдо (рдбреЙрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ) рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИред
рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ, рдРрд╕реА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХреА рдЧрдИ рд╣реИред рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ url рдПрдХ рдирд┐рд░реНрдпрд╛рддрд┐рдд рд╡рд░реНрдЧ рд╣реИ, рдлрд┐рд░ рдмрд┐рдВрджреАрджрд╛рд░ рд╡рд┐рдХрд▓реНрдк рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ :)ред рдЧреНрд░рд╛рд╣рдХ рдкрдХреНрд╖ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ - рдЖрдк рд╣рдореЗрд╢рд╛ рдпрд╣рд╛рдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рд╕рд┐рд░реНрдл PHP рд╣реИред

рдПрд╕рдПрдордбреА рдореЗрдВ рднреА рдЙрдирдХреЗ рдЧреБрдгреЛрдВ рдХреЗ рд╕рд╛рде рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд░рд┐рдЯрд░реНрди рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рд╣рдо рдЗрд╕ рдХреНрд╖рдг рдХреЛ рдЫреЛрдбрд╝ рджреЗрдВрдЧреЗред

рдЬреЛ рд▓реЛрдЧ рд╡рд┐рд╕реНрддреГрдд рджрд╕реНрддрд╛рд╡реЗрдЬ рдвреВрдВрдврдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЙрдирдХреЗ рд▓рд┐рдП рдореИрдВ рддрд░реАрдХреЛрдВ рдХреЗ рдирд╛рдо, phpDoc рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдФрд░ рд╕рд░реНрд╡рд░ рдпрд╛ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рдкрдврд╝рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗ рд╕рдХрддрд╛ рд╣реВрдВред

рдЬреАрд╡рди рд╣реИрдХ


рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рд╣реИ?

рдХрдИ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ:
  1. HTTP рдмреЗрд╕рд┐рдХ рдкреНрд░рд╛рдорд╛рдгрд┐рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдХреНрд▓рд╛рдЗрдВрдЯ рдореЗрдВ, $ CurlOptions array рдореЗрдВ рдХреЗрд╡рд▓ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рдЬреЛрдбрд╝реЗрдВ :)
  2. HTTP рд╣реЗрдбрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЯреЛрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЖрд╡рд╢реНрдпрдХ рд╡рд┐рдзрд┐ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред
  3. рд╡рд┐рдзрд┐ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЯреЛрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛?

рдХреБрдЫ рд▓реЛрдЧ рдмреЗрд╕ 64 рдореЗрдВ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдФрд░ рдХреБрдЫ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рднреЗрдЬрдиреЗ рдХреЗ рд╕рд╛рде рдПрдХ рдЕрдЬреАрдм рд╡рд┐рдХрд▓реНрдк рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред
рдЕрдзрд┐рдХ рдпрд╛ рдХрдо рд╕рд╛рдорд╛рдиреНрдп рд╕рдорд╛рдзрд╛рди рдПрдХ рд╡рд┐рдзрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдХрд┐рд╕ рдкрддреЗ рдкрд░ рдлрд╝рд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг
 --> {"jsonrpc": "2.0", "method": "send_image", "params": ..., "id": 1} <-- {"jsonrpc": "2.0", "result": {"URL": "/exampleurl?id=12345", "maxsize": 10000000, "accepted-format":["jpg", "png"]}, "id": 1} -->      .      ,    --> {"jsonrpc": "2.0", "method": "send_done", "params": {"checksum": "1a5e8f13"}, "id": 2} <-- {"jsonrpc": "2.0", "result": "ok"} 

рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдореЗрдВ рддреНрд░реБрдЯрд┐

рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╣реА рдХреЛрдб , рд╕рдВрджреЗрд╢ рдФрд░ рдбреЗрдЯрд╛ рдлрд╝реАрд▓реНрдб рдХреЗ рд╕рд╛рде рддреНрд░реБрдЯрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред BaseJsonRpcServer рдирд╛рдордХ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдЖрдк рдПрдХ рдЕрдкрд╡рд╛рдж рдХреЛ рдлреЗрдВрдХ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдХреЛрдб рдФрд░ рдбреЗрдЯрд╛ рдкрд╛рд╕ рдХрд░рдирд╛ рд╣реИ ред рдЖрдк рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ рд╕рдВрджреЗрд╢ рдХреЛ $ errorMessages рд╕рд░рдгреА рдореЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред

рдХреЗрд╡рд▓ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдлрд╝реАрд▓реНрдбреНрд╕ рдХреЗ рд╕рд╛рде рдСрдмреНрдЬреЗрдХреНрдЯ рдирд┐рд░реНрдпрд╛рдд рдХрд░реЗрдВ

рдпрд╣ рд╕рдм рдкреВрд░реА рддрд░рд╣ рдЖрдк рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕реЗ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред рдореИрдВ рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдХреБрдЫ рд╡рд░реНрдЧ ObjectToJsonConverter рдмрдирд╛рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗ рд╕рдХрддрд╛ рд╣реВрдВ , рдЬрд┐рд╕рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд╕рд░рдгреА рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдкрд╛рдВрддрд░рдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
рдЙрджрд╛рд╣рд░рдг
 <?php class ObjectToJsonConverter { /** * @param City $city * @return array */ public static function GetCity( City $city ) { return array( 'id' => $city->cityId , 'name' => $city->title , 'region' => $city->region->title ); } } // -     return array_map( 'ObjectToJsonConverter::GetCity', $cities ); 


рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдХрдирд╡рд░реНрдЯ рдХрд░реЗрдВ

рдлрд┐рд░, рдпрд╣ рд╕рдм рдЖрдк рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдЖрд╡рд╢реНрдпрдХ рдХрдХреНрд╖рд╛рдПрдВ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХреБрдЫ рд╕рд░рд▓ рдХрдирд╡рд░реНрдЯрд░ рд╡рд╛рдкрд╕ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ (рд░реВрдкрд╛рдВрддрд░рдг рдХреЗ рд▓рд┐рдП рд╡рд┐рдЪрд╛рд░ MyShowsClient.php рдореЗрдВ рд▓рд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)

рдирд┐рд╖реНрдХрд░реНрд╖


рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд▓реЗрдЦ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж, JSON-RPC рдПрдХ рдЗрдВрдЯрд░реЗрдХреНрд╢рди рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╕рдордп рдзреНрдпрд╛рди рд╕реЗ рд╡рдВрдЪрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ 89% рдХреЛрдб рдХреЛ рдХрд╡рд░ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рднреА, рдореИрдВ рдХреЗрд╡рд▓ рдпрд╣ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ: "рдпрд╣ рдХрд╛рдо рдХрд░рдиреЗ рд▓рдЧрддрд╛ рд╣реИ" :)

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


All Articles