# y-api #### About y-api service The service provides domain categorization services and can be used both locally and in a distributed system. In the latter case, the speed of receiving a response decreases due to network delays. A stable connection to the Internet is required for the uninterrupted operation of the service: - loading the database and updating it - sending counter\_cat and counter\_unknown\_cat values - sending additional information about the instance with the container Stats are sent every 5 minutes. The performance of the y-api service varies approximately from 70k to 150k requests per second. The performance depends on the number of domains and threads addressing the y-api. It operates based on a parallel server architecture, where a thread is created upon the arrival of a request. --- #### Using y-api service ##### Starting the service 1\. Install docker. 2\. Load the archive with the container image with `sudo docker load -i y_api.tar.gz`3. Run the image in the docker subnet. 3.1 Alternatively, create a separate subnet `sudo docker network create --driver=bridge --subnet=193.33.33.0/24 y-api-net` and run the container `sudo docker run -it -d --net y-api-net --ip 193.33.33.33 y-api:1` 4\. Check the service with `curl http://193.33.33.33/qwerty.com`
193.33.33.33 is an example, you can use any other network.
Service response: `{"category": [36, 49], "bad": false, "category_name": ["Education", "Computers & Internet"]}`**ATTENTION!** The request counter is sent every 5 minutes. Check time must be shorter so the data is not sent to the statistics server for billing.
Logging is done to **stdout** and **stderr**. The supported request is **GET**. --- ##### Request examples**Request** | **Answer** |
curl -v http://193.33.33.33/qwerty.com | < HTTP/1.1 200 OK < Content-type: application/json < Connection: keep-alive \* no chunk, no close, no size. Assume close to signal end < \* Closing connection 0 {"category": \[36, 49\], "bad": false, "category\_name": \["Education", "Computers & Internet"\]} |
curl -v http://193.33.33.33/foo | < HTTP/1.1 404 Not Found < Connection: keep-alive \* Connection #0 to host 193.33.33.33 left intact |
curl -v http://193.33.33.33/stat/ | < HTTP/1.1 200 OK < Content-type: application/json < Connection: close < \* Closing connection 0 {"counter\_cat": \[150002\], "counter\_unknown\_cat": \[0\]} |
curl -v -X POST http://193.33.33.33/qwerty.com | < HTTP/1.1 405 Method Not Allowed < Content-Type: text/html < Allow: GET < Connection: close \* Closing connection 0 |
If there is no connection with the statistics server or any response from it other than "200 OK". curl -v http://193.33.33.33/qwerty.com | < HTTP/1.1 503 Service Unavailable < Content-type: application/json < Connection: close < \* Closing connection 0 {"details": "billing failure"} |