Рубрики
Без рубрики

Понимание и внедрение простого API Python Rest

Что такое API спокойного? Это определенно архитектурный стиль строительства API, отдых – это … Tagged с Python, DevOps, API, обсудите.

Что такое API спокойного?

Это определенно архитектурный стиль строительства API , Отдых является основным архитектурным принципом Интернета. Удивительная вещь в Интернете – это тот факт, что клиенты (браузеры) и серверы могут взаимодействовать сложными способами, и клиент заранее не знает ничего о сервере и ресурсах, которые он размещает. Ключевое ограничение состоит в том, что сервер и клиент должны оба согласоваться с используемым носителем, который в случае Интернета является HTML.

RESTFUL API – также называемый веб -службой RESTFUL – основан на репрезентативном передаче состояний ОТДЫХАТЬ

Практический пример API – это когда Вы входите в ресторан с кем -то, вы хотите заказать продукт для себя и человека, у вас есть официант, который должен принять ваш запрос и готовить ответ на кухню и вернет вам его, официант действует как API

Официант выступает в качестве HTTP, а кухня является сетью, поэтому он отправляет запрос, а кухня отправляет его обратно, кухня возвращает вам ответ, используя HTTP -ответ.

Ваша стандартная база данных CRUD (создание, чтение, обновление, удаление) переводится на глаголы HTTP: post, get, plot, delete. После этого соглашения и передача правильных параметров в основном означает, что вы перевели часть бизнес -логики на HTTP. Это так просто.

– GET должен использоваться для запроса информации из веб-службы.

– Пост должен использоваться для размещения данных на веб-сервер, где нет спецификации относительно того, где веб-служба должна разместить данные. Это можно считать эквивалентом вставки.

– Путь следует использовать, когда вы хотите указать, куда пошли данные. Это идентификационное действие, так как повторяется, оно ничего не изменит при каждом повторном вызове. В качестве альтернативы это может рассматриваться как эквивалент обновления.

– и удаление, очевидно, должно использоваться для удаления некоторых данных или ресурса с веб-сервера.

Теперь давайте построим RESTFUL API, который поддерживает +,-,/,*
Метод: пост
Ресурсы:+,-,/,*

Диаграмма методов ресурсов

/добавлять ПОЧТА + X: int, y: int Добавление двух чисел 200: ОК, 300: отсутствует
/вычтите ПОЧТА x: int, y: int Вычитание двух чисел 200: ОК, 300: отсутствует
/умножьте ПОЧТА * X: int, y: int Умножение двух чисел 200: ОК, 300: отсутствует
/разделять ПОЧТА / x: int, y: int Разделив два числа 200: ОК, 301: отсутствует, 302: y нуле
from flask import Flask, jsonify, request
from flask_restful import Api, Resource

app = Flask(__name__)
api = Api(app)


def checkPostedData(postedData, functionName):
    if (functionName == "add" or functionName == "subtract" or functionName == "multiply"):
        if "x" not in postedData or "y" not in postedData:
            return 301 #Missing parameter
        else:
            return 200
    elif (functionName == "division"):
        if "x" not in postedData or "y" not in postedData:
            return 301
        elif int(postedData["y"])==0:
            return 302
        else:
            return 200

class Add(Resource):
    def post(self):
        #If I am here, then the resouce Add was requested using the method POST

        #Step 1: Get posted data:
        postedData = request.get_json()

        #Steb 1b: Verify validity of posted data
        status_code = checkPostedData(postedData, "add")
        if (status_code!=200):
            retJson = {
                "Message": "An error happened",
                "Status Code":status_code
            }
            return jsonify(retJson)

        #If i am here, then status_code == 200
        x = postedData["x"]
        y = postedData["y"]
        x = int(x)
        y = int(y)

        #Step 2: Add the posted data
        ret = x+y
        retMap = {
            'Message': ret,
            'Status Code': 200
        }
        return jsonify(retMap)

class Subtract(Resource):
    def post(self):
        #If I am here, then the resouce Subtract was requested using the method POST

        #Step 1: Get posted data:
        postedData = request.get_json()

        #Steb 1b: Verify validity of posted data
        status_code = checkPostedData(postedData, "subtract")


        if (status_code!=200):
            retJson = {
                "Message": "An error happened",
                "Status Code":status_code
            }
            return jsonify(retJson)

        #If i am here, then status_code == 200
        x = postedData["x"]
        y = postedData["y"]
        x = int(x)
        y = int(y)

        #Step 2: Subtract the posted data
        ret = x-y
        retMap = {
            'Message': ret,
            'Status Code': 200
        }
        return jsonify(retMap)


class Multiply(Resource):
    def post(self):
        #If I am here, then the resouce Multiply was requested using the method POST

        #Step 1: Get posted data:
        postedData = request.get_json()

        #Steb 1b: Verify validity of posted data
        status_code = checkPostedData(postedData, "multiply")


        if (status_code!=200):
            retJson = {
                "Message": "An error happened",
                "Status Code":status_code
            }
            return jsonify(retJson)

        #If i am here, then status_code == 200
        x = postedData["x"]
        y = postedData["y"]
        x = int(x)
        y = int(y)

        #Step 2: Multiply the posted data
        ret = x*y
        retMap = {
            'Message': ret,
            'Status Code': 200
        }
        return jsonify(retMap)

class Divide(Resource):
    def post(self):
        #If I am here, then the resouce Divide was requested using the method POST

        #Step 1: Get posted data:
        postedData = request.get_json()

        #Steb 1b: Verify validity of posted data
        status_code = checkPostedData(postedData, "division")


        if (status_code!=200):
            retJson = {
                "Message": "An error happened",
                "Status Code":status_code
            }
            return jsonify(retJson)

        #If i am here, then status_code == 200
        x = postedData["x"]
        y = postedData["y"]
        x = int(x)
        y = int(y)

        #Step 2: Multiply the posted data
        ret = (x*1.0)/y
        retMap = {
            'Message': ret,
            'Status Code': 200
        }
        return jsonify(retMap)



api.add_resource(Add, "/add")
api.add_resource(Subtract, "/subtract")
api.add_resource(Multiply, "/multiply")
api.add_resource(Divide, "/division")

@app.route('/')
def hello_world():
    return "Hello World!"


if __name__=="__main__":
    app.run(debug=True)

Почему бы не поделиться ссылкой для этого поста в Twitter? Распространить слово!

Не забудьте Следуй за мной в Твиттере

Спасибо!

Оригинал: “https://dev.to/thecraftman/understanding-and-implementing-a-simple-rest-api-jok”