Skip to content

Birbirleri ile haberleşen minimum iki microservice'in olduğu bir yapıdır. Basit bir telefon rehberi ve konuma göre raporlanma uygulaması hedeflenmiştir.

Notifications You must be signed in to change notification settings

alincak/ContactsOnContainers

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

51 Commits
 
 
 
 
 
 

Repository files navigation

Kişi Rehberi ve Raporlama

Birbirleri ile haberleşen minimum iki microservice'in olduğu bir yapıdır. Basit bir telefon rehberi ve konuma göre raporlanma oluşturulması hedeflenmiştir.

Çalıştırma (Running) ve Kullanımı (How to use)

docker compose up : Bu komutu src içerisinde çalıştırarak projeyi ayağa kaldırabilirsiniz.

docker compose down : container'ları silmek için kullanabilirsiniz. Image'lar silinmez.

API Base Endpoint (BASE_ENPOINT): http://localhost:5000/

Contact Endpoints

[HttpGET] [BASE_ENDPOINT]/Contacts

[HttpPost] [BASE_ENDPOINT]/Contacts

[HttpGET] [BASE_ENDPOINT]/Contacts/{id}

[HttpDelete] [BASE_ENDPOINT]/Contacts/{id}

[HttpPost] [BASE_ENDPOINT]/Contacts/info

[HttpDelete] [BASE_ENDPOINT]/Contacts/info/{id}

Swagger Adresi (Swagger Endpoint): http://localhost:5001/swagger/index.html

  • Örnekler curl ile (Examples with curl)

Kişi listeleme (Contact List): curl -X 'GET' \ '[BASE_ENDPOINT]/Contacts' \ -H 'accept: text/plain'

Kişi oluşturma (Create Contact): curl -X 'POST' \ '[BASE_ENDPOINT]/Contacts' \ -H 'accept: text/plain' \ -H 'Content-Type: application/json' \ -d '{ "id": "", "name": "NameTest", "lastName": "LastnameTest", "company": "CompanyTest" }'

Kişi detayları (Contact Details): curl -X 'GET' \ '[BASE_ENDPOINT]/Contacts/61fa5045e109d1e70738006f' \ -H 'accept: text/plain'

Kişi sil (Delete Contact): curl -X 'DELETE' \ '[BASE_ENDPOINT]/Contacts/61fa5045e109d1e70738006f' \ -H 'accept: */*'

İletişim bilgisi ekleme (Add contact info): curl -X 'POST' \ '[BASE_ENDPOINT]/Contacts/info' \ -H 'accept: text/plain' \ -H 'Content-Type: application/json' \ -d '{ "id": "", "contactId": "61fa5045e109d1e70738006f", "infoType": 0, "value": "5311111111" }'

İletişim bilgisi silme (Delete contact info): curl -X 'DELETE' \ '[BASE_ENDPOINT]/Contacts/info/61fa50e5e109d1e707380070' \ -H 'accept: */*'

Report Endpoints

[HttpGET] [BASE_ENDPOINT]/Reports

[HttpPost] [BASE_ENDPOINT]/Reports

[HttpGET] [BASE_ENDPOINT]/Reports/{id}

Swagger Adresi (Swagger Endpoint): http://localhost:5002/swagger/index.html

  • Örnekler curl ile (Examples with curl)

Rapor listeleme (Report List): curl -X 'GET' \ '[BASE_ENDPOINT]/Reports' \ -H 'accept: text/plain'

Rapor Oluşturma (Create Report): curl -X 'POST' \ '[BASE_ENDPOINT]/Reports' \ -H 'accept: text/plain' \ -d ''

Rapor listeleme (Report List): curl -X 'GET' \ '[BASE_ENDPOINT]/Reports/{id}' \ -H 'accept: text/plain'

Teknik Tasarım

Kişiler

Sistemde teorik anlamda sınırsız sayıda kişi kaydı yapılabilmektedir. Her kişiye bağlı iletişim bilgileri de yine sınırsız bir biçimde eklenebilmektedir.

Veri yapısındaki alanlar aşağıdaki gibidir:

  • UUID
  • Ad
  • Soyad
  • Firma
  • İletişim Bilgisi
    • Bilgi Tipi: Telefon Numarası, E-mail Adresi, Konum
    • Bilgi İçeriği

Rapor

Rapor talepleri asenkron çalışmaktadır. Kullanıcı bir rapor talep ettiğinde, sistem arkaplanda bu çalışmayı darboğaz yaratmadan sıralı bir biçimde ele alacak; rapor tamamlandığında ise kullanıcının "raporların listelendiği" endpoint üzerinden raporun durumunu "tamamlandı" olarak gözlemleyebilmektedir.

Rapor basitçe aşağıdaki bilgileri içermektedir:

  • Konum Bilgisi
  • konumda yer alan rehbere kayıtlı kişi sayısı
  • konumda yer alan rehbere kayıtlı telefon numarası sayısı

Teknik Detaylar

  • Kullanılan teknolojiler:
    • .NET Core
    • MongoDB
    • RabbitMQ (Message Broker)
    • Ocelot
    • Docker compose

Mimari Yapı

contact_containers_draw_io drawio (1)

About

Birbirleri ile haberleşen minimum iki microservice'in olduğu bir yapıdır. Basit bir telefon rehberi ve konuma göre raporlanma uygulaması hedeflenmiştir.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published