JSON-RPC λ° κΈ°ν RPC μ μ¬ APIμλ μ’ μ’ λ³Έλ¬Έμ μ μλ λ©μλκ° μλ λ¨μΌ URIλ§ μμ΅λλ€. νΈμ§κΈ°κ° κ²½κ³ λ₯Ό μ 곡νμ§ μκ³ API μ½μμ΄ μ μ ν μ€λ²λ‘λλ κ²°κ³Όλ₯Ό λ°ννλλ‘ μ΄λ¬ν 리μμ€μ λν΄ μ¬λ¬ μμ μ μ μν μ μμΌλ©΄ μ’μ κ²μ λλ€.
apiary.ioλ‘ μ΄λν©λλ€.
@rodriguise μ΄ λ¬Έμ μ λν μ 보λ μ΄λμμ μ°Ύμ μ μμ΅λκΉ? μ λ κ°μ μκ°μ λλ€. RPCμ κ°μ APIλ₯Ό μ§μνλ©΄ μ’μ κΈ°λ₯μ΄ λ κ²μ λλ€.
@rodriguise μ λ μ΄ κΈ°λ₯μ λ§€μ° κ΄μ¬μ΄ μμ΅λλ€. μ΄ λ¬Έμ μ λν΄ μ΄λμμ λ°°μΈ μ μμ΅λκΉ?
@adammbalogh @SvyatoslavVasiliev μ¬μ© μ¬λ‘λ₯Ό μ’ λ μμΈν μ€λͺ ν΄ μ£Όμκ² μ΅λκΉ?
@pksunkara νμ€ν©λλ€.
JSON-RPC 2.0 μ¬μ μ λ°λΌ μ€κ³λ APIκ° μμ΅λλ€. μλ₯Ό λ€λ©΄ λ€μκ³Ό κ°μ΅λλ€.
POST 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"
}
}
}
μ΄λ¬ν APIλ "method" 맀κ°λ³μμ λ³Έλ¬Έμ λ©μλ μ΄λ¦μ΄ ν¬ν¨λ λ©μλ κ·Έλ£Ήμ λν URLμ΄ νλλ§ μμ΅λλ€.
νμ¬ Blueprint ꡬνμμλ κ²½λ‘ μ€μ¬ μΈμ΄ κ΅¬μ‘°λ‘ μΈν΄ μ΄λ¬ν APIλ₯Ό μ€λͺ
ν μ μμ΅λλ€.
μλ
νμΈμ @pksunkara , μ΄κ²μ λν μμμ΄ μμ΅λκΉ?
μλ΄μ₯ λμ λ€λ₯Έ λ λλ§ λꡬ(μ: aglio)λ₯Ό μ¬μ©ν΄ 보μκ³ μλ΄μ₯κ³Ό λ¬λ¦¬ λ¬Έμλ₯Ό μ¬λ°λ₯΄κ² νμνμ΅λλ€. κ·Έλ¬λ μ΄λ¬ν λꡬλ μμ±κ³Ό κ°μ μΌλΆ κΈ°λ₯μ λ³λμ μΉμ
μΌλ‘ λ λλ§νλ κ²μ μ§μνμ§ μμ΅λλ€.
λ΄ λ¬Έμ λ₯Ό ν΄κ²°νλ λ° λμμ΄ λλ€λ©΄ λ§€μ° μ’μ κ²μ
λλ€.
μλ νμΈμ @SvyatoslavVasiliev λ°λΌμ μ΄κ²μ μ¬λ°λ₯΄κ² μ½μΌλ©΄ JSON RPCμ λν μ§μμ΄ https://github.com/apiaryio/api-blueprint/issues/289μ μ νμ§λ§ κΈ°μ μ μΌλ‘ νλ‘ν μ½μ μ¬μ ν ββHTTPμ λλ€.
URI λ° HTTP λ©μλμμ 리μμ€ λ° μμ μ μλ₯Ό λΆλ¦¬νλ©΄ μ΄ κ²½μ°μλ λμμ΄ λ©λλ€.
μ΄κ² λ§μ΄ λλμ? μμΈν λ΄μ©μ #289λ₯Ό μ°Έμ‘°νμΈμ.
μλ
νμΈμ @zdneλ ,
#289λ₯Ό μ΄ν΄νλ €κ³ λ
Έλ ₯νμ§λ§ μμ ν μ΄ν΄ν μ μμ΅λλ€.
λ΄ APIλ JSON λ³Έλ¬Έκ³Ό ν¨κ» HTTPλ₯Ό μ μ‘μΌλ‘ μ¬μ©νμ§λ§ URLμ΄ νλλ§ μκ³ HTTP POSTλ§ μ¬μ©ν©λλ€. "method" 맀κ°λ³μμ ν¬ν¨λ 리μμ€ λ° λ©μλμ λν λͺ¨λ μ 보λ₯Ό λ³Έλ¬Έμ ν¬ν¨ν©λλ€.
μλ₯Ό λ€μ΄ μν°ν°λ₯Ό κ°μ Έμ΅λλ€.
{
"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λ₯Ό λ¬Έμννλ νλμ μ΄κ³ κΈ°λ₯μ μΈ λ°©λ²μ μ°Ύμ§ λͺ»νμ΅λλ€(ν μ€νΈ μμ±μλ μ¬μ©ν μ μμ). μ ν¬λ§μ API Blueprintμμ§λ§ μ€μ λ‘ μ§μλμ§ μλ κ² κ°μ΅λλ€. μ΄μ λν API Blueprintμ ν₯ν κ³νμ μκ³ μκ±°λ μ΄λ₯Ό μ§μνλ λ€λ₯Έ ꡬ쑰/λꡬμ λν μ μμ΄ μμ΅λκΉ?
@Dynom λͺ κ°μ§ μ‘°μΈμ λ릴 μ μμ΅λλ€.
API μ²μ¬μ§μ λν΄ Aglio λ λλ§μ μλν μ μμ§λ§ μμ± μΉμ
μ λ λλ§νμ§ μμ§λ§ λ¬Έμμ ꡬ쑰λ₯Ό μ¬λ°λ₯΄κ² νμν©λλ€.
λ λ€λ₯Έ λꡬλ API Doc μ
λλ€. νμ¬ ν
μ€νΈ μ€μ΄λ©° μ ν©ν κ² κ°μ΅λλ€.
@SvyatoslavVasiliev κ°μ¬