Hola amigos,
Today we are going to implement a rest API using Python and we will use swagger to document it!
What a nice day ;)
TL;DR
As usual, you may access source code in github :
https://github.com/NurettinYAKIT/nurettinyakit.com/tree/master/be-stock-python
Let's start. Step by step...
1. Create the python program
We are going to use- Flask
- request
- jsonify
- iexfinance.stocks
So we need to import them
from flask import Flask, request, jsonify
from iexfinance.stocks import Stock
Now we may define our program as a flask app
app = Flask(__name__)
Next step is creating a REST API
@app.route("/python/stock", methods=['POST'])
def stock_logic():
the Rest is easy, just call another api
ticker = request.get_json()['symbol']
try:
stock = Stock(ticker.encode("utf-8"))
price = stock.get_price()
except Exception as e :
print("This is an error message! " + str(e) )
Here is the whole program
from flask import Flask, request, jsonify
from iexfinance.stocks import Stock
app = Flask(__name__)
@app.route("/python/stock", methods=['POST'])
def stock_logic():
ticker = request.get_json()['symbol']
try:
stock = Stock(ticker.encode("utf-8"))
price = stock.get_price()
except Exception as e :
print("This is an error message! " + str(e) )
return jsonify(
ticker=ticker,
price=price
)
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
And tada! Now you have your application
Just run it!
2. Run it on docker
Create your Dockerfile
FROM python:2-alpine
ADD stock_logic.py /
RUN pip install --upgrade pip && \
pip install pip-tools && \
pip install -U setuptools
RUN apk add --update curl gcc g++ && \
ln -s /usr/include/locale.h /usr/include/xlocale.h
RUN pip install Flask
RUN pip install requests
RUN pip install jsonify
RUN pip install pandas
RUN pip install iexfinance
CMD [ "python", "./stock_logic.py" ]
EXPOSE 5000
Build the image
docker build -t be-stock-python .
run it!
docker run -i -t -p 5000:5000 be-stock-python
Bravo! Now your app is running on Docker ;)
Do you want to try? Just run a curl command
curl --header "Content-Type: application/json" \
--request POST \
--data '{ "symbol":"GOOGL" }' \
http://localhost:5000/python/stock
No comments:
Post a Comment