DEV Community

Ali Buğra Okkalı for Açıklab

Posted on • Edited on

20 1

Python ile REST-API Servisi Oluşturma

REST API Nedir ?

REST (Representational State Transfer) Temsili Durum Aktarımı anlamına gelir.

Bir istemci bir sunucudan kaynaklar hakkında bilgi almak için bir istekte bulunduğunda, sunucu kaynağın mevcut durumunu istemci makineye geri aktarır.

representational-state-transfer-diagram

Yukarıdaki şekilde de görebileceğiniz gibi , istemci bir veri tabanı sunucusundan veri talep edebileceğiniz PC'nizdir ve tüm iletişim REST API'leri üzerinden yapılır.

Bunun için de birkaç farklı yöntem vardır :

  • GET - İstemci tarafından sunucudan veri seçmek veya almak için kullanılır.

  • POST - İstemci tarafından sunucuya veri göndermek veya yazmak için kullanılır.

  • PUT - İstemci tarafından sunucudaki mevcut verileri güncellemek için kullanılır.

  • DELETE - İstemci tarafından sunucudaki mevcut verileri silmek için kullanılır.

REST API Nasıl Oluşturulur ?

API'ler Java, C#, Python vb. gibi istediğiniz herhangi bir programlama dili kullanılarak oluşturulabilir.

Bu uygulamada, bir API oluşturmak için Python'u kullanacağız ve bunun için Flask olarak bilinen bir kütüphaneden yararlanacağız. Flask, bizim için bir sunucu oluşturmak için ağır kaldırmanın çoğunu yapan popüler bir hafif web uygulaması geliştirme çerçevesidir ve geliştiriciler olarak yalnızca API'leri oluşturmak için iş mantığına odaklanmamız gerekir.

Kurulum

Şimdi, Rest-API'yi oluşturmak için kullanacağımız flask, flask_restful ve veri işlemede kullanacağımız pandas paketlerini python3-pip ile kuralım.



$ sudo apt install python3-pip


Enter fullscreen mode Exit fullscreen mode


$ pip3 install flask


Enter fullscreen mode Exit fullscreen mode


$ pip3 install flask_restful


Enter fullscreen mode Exit fullscreen mode


$ pip3 install pandas


Enter fullscreen mode Exit fullscreen mode

Kod

Kodun tamamına buradan ulaşabilirsiniz.

  • Gerekli paketlerin import edilmesi. ```python

from flask import Flask
from flask_restful import Api, Resource, reqparse
import pandas as pd

- Api nesnesinin oluşturulması.
```python


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


Enter fullscreen mode Exit fullscreen mode
  • GET çağırıldığında users.csv okunması, dict formatına çevrilmesi ve döndürülmesi. ```python

class Users(Resource):
def get(self):
data = pd.read_csv('users.csv')
data = data.to_dict('records')
return {'data' : data}, 200

- POST çağırıldığında girdilerin parse edilmesi ve users.csv'ye bir satır eklenmesi.
```python


    def post(self):
        parser = reqparse.RequestParser()
        parser.add_argument('name', required=True)
        parser.add_argument('age', required=True)
        parser.add_argument('city', required=True)
        args = parser.parse_args()

        data = pd.read_csv('users.csv')

        new_data = pd.DataFrame({
            'name'      : [args['name']],
            'age'       : [args['age']],
            'city'      : [args['city']]
        })

        data = data.append(new_data, ignore_index = True)
        data.to_csv('users.csv', index=False)
        return {'data' : new_data.to_dict('records')}, 201


Enter fullscreen mode Exit fullscreen mode
  • Çoğu zaman bir API'de kaynağınızın birden çok URL'si olacaktır. Api nesnesindeki add_resource() fonksiyonu ile birden çok URL iletebilirsiniz. Her biri bir Resource'a yönlendirilecektir. ```python

api.add_resource(Users, '/users')



# Çalıştırma 

Enter fullscreen mode Exit fullscreen mode

$ python3 flask_app.py

Serving Flask app 'flask_app' (lazy loading)

Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.

Debug mode: off

Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

# Testler
Testler için bir VSCode eklentisi olan Thunder Client kullanılmıştır.

```GET

 http://127.0.0.1:5000/users

Enter fullscreen mode Exit fullscreen mode

GET


 http://127.0.0.1:5000/users?name=Bugra&age=29&city=Istanbul

Enter fullscreen mode Exit fullscreen mode

POST


 http://127.0.0.1:5000/users

Enter fullscreen mode Exit fullscreen mode

GET2


 http://127.0.0.1:5000/Tom

Enter fullscreen mode Exit fullscreen mode

GET3

Quadratic AI

Quadratic AI – The Spreadsheet with AI, Code, and Connections

  • AI-Powered Insights: Ask questions in plain English and get instant visualizations
  • Multi-Language Support: Seamlessly switch between Python, SQL, and JavaScript in one workspace
  • Zero Setup Required: Connect to databases or drag-and-drop files straight from your browser
  • Live Collaboration: Work together in real-time, no matter where your team is located
  • Beyond Formulas: Tackle complex analysis that traditional spreadsheets can't handle

Get started for free.

Watch The Demo 📊✨

Top comments (0)

👋 Kindness is contagious

Engage with a wealth of insights in this thoughtful article, valued within the supportive DEV Community. Coders of every background are welcome to join in and add to our collective wisdom.

A sincere "thank you" often brightens someone’s day. Share your gratitude in the comments below!

On DEV, the act of sharing knowledge eases our journey and fortifies our community ties. Found value in this? A quick thank you to the author can make a significant impact.

Okay