-
Notifications
You must be signed in to change notification settings - Fork 1
Create REST Api
Rajesh Khadka edited this page Nov 18, 2019
·
1 revision
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
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
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
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
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)