Skip to content

Create REST Api

Rajesh Khadka edited this page Nov 18, 2019 · 1 revision

List of Users

users = [{
    'name': 'Bob',
    'address': 'USA',
    'profession': 'software engineer'
},
    {
        'name': 'Jhon',
        'address': 'Australia',
        'profession': 'Architect'
    },
    {
        'name': 'Martin',
        'address': 'Canada',
        'profession': 'Singer'
    }
]


class UserResource(Resource):
    @classmethod
    def get(cls):
        return users


api.add_resource(UserResource, '/users')

Endpoint

{{url}}/v1/users

HTTP Verb

GET

Create User

from flask_restful import request

class UserResource(Resource):
    @classmethod
    def post(cls):
        user = request.get_json()
        users.append(user)
        return user

Endpoint

{{url}}/v1/users

HTTP Verb

POST

Body

 {
        "name": "Mark",
        "address": "USA",
        "profession": "Engineer"
 }

Headers:

Content-Type:application/json

Update User

from flask_restful import request

class UserResource(Resource):
    @classmethod
    def put(cls):
        data = request.get_json()
        name = data['name']
        for user in users:
            if user['name'] == name:
                users.remove(user)
                users.append(data)
        return data

Endpoint

{{url}}/v1/users

HTTP Verb

PUT

Body

 {
        "name": "Mark",
        "address": "Germany",
        "profession": "Developer"
 }

Headers:

Content-Type:application/json

Delete User

from flask_restful import request

class UserResource(Resource):
     @classmethod
    def delete(cls):
        name = request.get_json()['name']
        for user in users:
            if user['name'] == name:
                users.remove(user)
                return {}, 204
        return {"message": F"User with {name} doesnt exit"}, 400

Endpoint

{{url}}/v1/users

HTTP Verb

DELETE

Body

 {
        "name": "Mark",
 }

Headers:

Content-Type:application/json

Final Code

from flask import Flask
from flask_restful import Api, Resource, request

app = Flask(__name__)
api = Api(app, prefix='/v1')


class HelloWorldResource(Resource):
    @classmethod
    def get(cls):
        return 'Congratulations you have successfully built first api in flask'


users = [{
    'name': 'Bob',
    'address': 'USA',
    'profession': 'software engineer'
},
    {
        'name': 'Jhon',
        'address': 'Australia',
        'profession': 'Architect'
    },
    {
        'name': 'Martin',
        'address': 'Canada',
        'profession': 'Singer'
    }
]


class UserResource(Resource):
    @classmethod
    def get(cls):
        return users

    @classmethod
    def post(cls):
        user = request.get_json()
        users.append(user)
        return user

    @classmethod
    def put(cls):
        data = request.get_json()
        name = data['name']
        for user in users:
            if user['name'] == name:
                users.remove(user)
                users.append(data)
        return data

    @classmethod
    def delete(cls):
        name = request.get_json()['name']
        for user in users:
            if user['name'] == name:
                users.remove(user)
                return {}, 204
        return {"message": F"User with {name} doesnt exit"}, 400


api.add_resource(UserResource, '/users')
api.add_resource(HelloWorldResource, '')

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

Github