Skip to content

a-khakimov/simple-http-client

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

7 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

ВСстовоС Π·Π°Π΄Π°Π½ΠΈΠ΅:

1. Simple API
Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΉ REST API ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Π΄Π΅Π»Π°ΡŽΡ‰ΠΈΠΉ 1 запрос, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΉ Ρ‚Π°ΠΊΠΎΠΌΡƒ:

curl -X POST http://localhost:8000/api/json/v2 -L -d '{"id":0, "jsonrpc":"2.0","method":"systemInfo","params":[]}'

ΠŸΡ€Π΅Π΄ΡƒΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ интСрфСйс, Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄, Π½Π΅ systemInfo, 
Ρ‚.Π΅. Π’Ρ‹Π·ΠΎΠ² Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ.

Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π‘99. Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ запуск ΠΊΡƒΡ€Π»Π° ΠΈΠ·-ΠΏΠΎΠ΄ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ.

Зависимости

  • libcurl
  • libjson-c

Π‘Π±ΠΎΡ€ΠΊΠ°

$ cd rest_cl
$ mkdir build
$ cd build/
$ cmake ..
$ make

Запуск

Для Π½Π°Ρ‡Π°Π»Π° запускаСм тСстовый сСрвСр

$ python3 rest_sv/Server.py

ΠšΠ»ΠΈΠ΅Π½Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΏΡƒΡ‰Π΅Π½ со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ опциями.

$ ./Client -h
Usage:
./Client
	 -h  Print usage
	 -v  Verbose
	 -u [url]	Default URL: http://localhost:8000/api/json/v2 
	 -m [method name]
Possible methods:
* systemInfo
* hardwareInfo

Π’ Π±Π°Π·ΠΎΠ²ΠΎΠΌ случаС:

$ ./Client -m systemInfo 
Ok!

Один запуск ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎΠ³ΠΎ (послСднСго) ΠΌΠ΅Ρ‚ΠΎΠ΄Π°.

Π Π΅Π·ΡƒΠ»ΡŒΠ°Ρ‚ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ сдСлав ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²Ρ‹Π·ΠΎΠ².

$ curl http://localhost:8000/api/json/v2 
Content-Type: application/json
{"42": {"systemInfo": {"ramTotal": 16669396992, "ramFree": 1191108608, "procsNumber": 8}, "hardwareInfo": {"Machine": "x86_64"}}}

Π‘Π΅Ρ€Π²Π΅Ρ€ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Π΄Π°Π½Π½Ρ‹Π΅.

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²

Для добавлСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π² Ρ„Π°ΠΉΠ»Π΅ methods.c Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°.

void someMethod(char* result)
{
    // РСализация
}

И Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² список methods.

static method_t methods[] =
{
    { "systemInfo", systemInfo },
    { "hardwareInfo", hardwareInfo },
    { "someMethod", someMethod }
    /* other methods */
};

About

Writed in C

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published